4

有点跟进:有没有办法遍历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

4

1 回答 1

6

我认为您不能关闭 !for_each_frame 向您显示的内容,您只能添加它。因此,例如:

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

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

于 2013-05-02T20:09:18.327 回答