有点跟进: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
答案 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
给你一些接近的东西,但输出中仍有一些垃圾。如果您编写自己的扩展程序,则可以获得更大的灵活性。