Windbg中查看函数参数

前言:2013-06-20记录在sina blog上,现在移过来。

今天在调试的时候想起以前自己在理解Windbg查看参数时的窘迫~所以记录下来

方式一:kb命令

断下后,输入kb,会回显调用堆栈的详细信息如:

Windbg中查看函数参数

第一个是EBP地址;
第二个是返回地址;
从第三个参数开始就依次是函数调用的参数啦,如果要查看里面的具体值可以使用d系列的命令。

方式二:在内存窗口中查看esp

Windbg中查看函数参数

要理解在此处通过查看esp从而获取调用参数的真实意义,需要了解函数栈的布局。
简单介绍下:

  • 函数栈的生长方向是从高地址向低地址生长
  • 参数入栈:从右向左
  • 函数栈的基本布局
    Windbg中查看函数参数
    每个函数在其开始的部分会保存EBP当前值,而我们的断点下在还没有执行到push ebp这一步之前,所以当前esp指向的是返回地址。So,esp+4表示最后压入的参数(也就是最左边的参数),通过esp+4*n(N*)可以遍历传入的参数。