使用 windbg 查找不在堆栈顶部的函数的函数参数
Finding function parameters of function that is not on top of stack using 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
提前感谢,-尼尔。
about the stack being different
没有理由认为 kd 和 kp 显示的堆栈会有所不同。它们本质上是同一数据的不同表示形式。如果您将堆栈粘贴到此处,我们可能会指出发生了什么!您确定在同一个位置运行两个命令吗?
how to check if symbols are loaded correctly
执行命令:"Love My Life"以查看已加载哪些二进制文件,符号。
Coming to your original question
kP 是查看传递给函数的参数的最简单方法。
做同样事情的另一种方法是a. 运行"kn",以便在堆栈跟踪中看到帧号。
b. 通过执行".frame 移动到感兴趣的框架
C. 现在使用 "dv" 转储变量
如果你真的很热情,你可以阅读关于参数传递的信息。然后,您只需要EBP +一些汇编代码读取即可确定我们传递了哪些参数。
相关文章:
- "error: no matching function for call to"构造函数错误
- 什么时候调用组成单元对象的析构函数
- 继承函数的重载解析
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- C++模板来检查友元函数的存在
- 递归函数计算序列中的平方和(并输出过程)
- 对RValue对象调用的LValue ref限定成员函数
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 为什么使用 "this" 指针调用派生成员函数?
- 将对象数组的引用传递给函数
- 函数调用中参数的顺序重要吗
- 函数向量_指针有不同的原型,我可以构建一个吗
- 动态构造函数中的新字符 [] 抛出"损坏的顶部大小";
- 使用 windbg 查找不在堆栈顶部的函数的函数参数
- 我需要了解顶部函数,比我已经知道的更具体.底部函数几乎是不言自明的
- 如果在派生类中定义了虚拟析构函数,但不是层次结构的顶部,该怎么办?C++
- 在函数顶部声明的变量与稍后声明的变量之间的差异
- 析构函数给出我不明白的输出("./a.out"中的错误:双重释放或损坏(快速顶部):)