windbg中是否有打印当前线程id和帧id的方法?

windbg中是否有打印当前线程id和帧id的方法?,windbg,Windbg,以下是一些后续内容: 有没有一种方法可以回应如下内容: 当前线程#{ThreadID}当前帧#{Frame number} 我找不到关于表示当前帧号或线程号的变量的任何信息 .frame命令显示当前帧编号 举个简单的例子:如果我这样做:~*e.thread 我得到如下输出: Implicit thread is now 000007ff`fffde000 Implicit thread is now 000007ff`fffdc000 Implicit thread is now 000007f

以下是一些后续内容:

有没有一种方法可以回应如下内容: 当前线程#{ThreadID}当前帧#{Frame number}

我找不到关于表示当前帧号或线程号的变量的任何信息

.frame命令显示当前帧编号

举个简单的例子:如果我这样做:
~*e.thread

我得到如下输出:

Implicit thread is now 000007ff`fffde000
Implicit thread is now 000007ff`fffdc000
Implicit thread is now 000007ff`fffd8000
Implicit thread is now 000007ff`fffd6000
Implicit thread is now 000007ff`ffefa000
但是我想看看windbg线程id。 类似地,我希望看到一个示例,它遍历所有线程和帧并打印如下内容:


当前线程#00当前帧#01

我不认为你可以关闭什么!对于每个_框架显示的内容,您只能添加到其中。例如:

~*e .printf "Thread is: 0x%x\n", @@c++(@$teb->ClientId.UniqueThread) ; !for_each_frame .printf "Frame is: %d\n", @$frame

给你一些接近的东西,但是输出中仍然有一些垃圾。如果您编写自己的扩展,您将拥有更大的灵活性。

这非常接近,但它的线程部分似乎有错误。即使我取出框架部分-我也不能只让线程部分工作:
~*e.printf“线程是:0x%x\n”,@@c++(@$teb->ClientId.UniqueThread)
给出:
0:031>~*e.printf“线程是:0x%x\n”,@@c++(@$teb->ClientId.UniqueThread)线程是:0x2c9c^在“~*e.printf”中缺少尾随引号线程是:0x%x“^在“~*e.printf”中缺少尾随引号线程是:0x%x
第一个可以正常打印,但下一个不能正常打印。很抱歉在该线程上设置了格式。谢谢你的帮助。。。我注意到你也回答了我的最后一个问题:)这可能是一个普通的windbg bug
~*e.printf“Thread:0x%x\n”,@$tid
似乎也有同样的问题。这个命令对我来说很好。尝试更新您的WinDbg版本,最新版本为6.2.9200(是的,比6.11更新)
~*e .printf "Thread is: 0x%x\n", @@c++(@$teb->ClientId.UniqueThread) ; !for_each_frame .printf "Frame is: %d\n", @$frame