从WinDBG获取完整的堆栈跟踪(用户堆栈+内核strack)

时间:2017-06-02 20:27:16

标签: debugging stack windbg

我在Windbg的nt!ntWriteFile中设置了一个断点。我正在使用内核调试,当某个程序(例如,notepad.exe)最终调用此API时,我希望得到用户堆栈+内核堆栈跟踪。当断点开始时,我会执行以下操作:

.reload /user
K

但结果与此类似(在这种情况下,notepad.exe是当前进程):

 # ChildEBP RetAddr  
00 8f5a8c34 76e96c73 nt!NtWriteFile
01 8f5a8c38 badb0d00 ntdll!KiFastSystemCall+0x3
02 8f5a8c3c 0320ef04 0xbadb0d00
03 8f5a8c40 00000000 0x320ef04

我的问题是:

  1. 什么是0xbadb0d00?我总是看到这个地址。
  2. 地址0x320ef04是用户登陆的功能(本例中是notepad.exe),呼叫从哪个开始?在这种情况下,那将是完整的堆栈跟踪(用户堆栈+内核堆栈)。
  3. 还有另一种更简单的方法吗?
  4. 谢谢。

    更新 正如我在此阅读link(感谢Thomas Weller),0xbadb0d00用于在某些情况下初始化未初始化的内存。现在我有更多的怀疑。为什么堆栈跟踪显示未初始化的内存?如果我在其上下文中,为什么notepad.exe stack-trace不会出现在输出中?

    我正在调试的Windows主机是Windows 7 32位。

0 个答案:

没有答案