windbg中有没有办法打印当前的线程ID和帧ID?

时间:2013-05-02 18:11:41

标签: windbg

有点跟进:Is there a way to itereate through all frames in windbg?

~*e .echo Thread Frames and Locals:; !for_each_frame dv

有没有办法回应如下:     当前线程#{ThreadID}当前帧#{帧号}

我找不到任何关于代表当前帧号或线程号的变量。

.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

1 个答案:

答案 0 :(得分:5)

我认为你不能关闭什么!for_each_frame告诉你,你只能添加它。所以,例如:

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

给你一些接近的东西,但输出中仍有一些垃圾。如果您编写自己的扩展程序,则可以获得更大的灵活性。