使用windbg查找不在堆栈顶部的函数的函数参数

时间:2014-03-03 09:20:33

标签: c++ debugging windbg

这是kd命令返回的调用堆栈的一部分。我想知道哪些参数传递给myutil!myclass :: somefunc。如何使用windbg获取这些参数?

0a11f614  0a11f634
0a11f618  7686592c rpcrt4!Invoke+0x2a
0a11f61c  0e7b2c98
0a11f620  03edad48
0a11f624  03edaba8
0a11f628  00000206
0a11f62c  00000003
0a11f630  0a11f820
0a11f634  0a11fa38
0a11f638  768e05f1 rpcrt4!NdrStubCall2+0x2ea
0a11f63c  6dbc12b2*** WARNING: Unable to verify timestamp for myutil
 myutil!myclass::somefunc

提前致谢, -Neel。

1 个答案:

答案 0 :(得分:0)

about the stack being different

kd和kp所示的堆栈没有理由不同。它们在相同数据上基本上是不同的表示。 如果您在此处粘贴堆栈,我们可能会指出最新情况! 你确定在同一个地方运行这两个命令吗?

how to check if symbols are loaded correctly

执行命令:“lml”以查看已加载哪些二进制文件。

Coming to your original question

kP是查看传递给函数的参数的最简单方法。

另一种做同样事情的方法是 一个。运行“kn”,以便在堆栈跟踪中看到帧编号。

湾通过“.frame

移动到感兴趣的框架

℃。现在使用“dv”转储变量

如果你真的很有激情,你可以阅读有关paramter传球的内容。然后您需要的是EBP +一些汇编代码读取以确定我们传递的参数。