栈分析指令

查看类型指令:dt

默认显示所有类型信息。加参数-b显示子类型信息

查看栈指令: k

k指令单独使用时,之显示栈地址、返回地址、函数名信息。如果需要其他信息需要使用参数。常见的有
b 显示函数调用时的前三个参数
c 只显示函数名
p 显示函数的所有参数,包括参数的名字、类型、值。
v 显示帧指针遗漏(FPO)信息。在基于x86处理器,显示器还包括调用约定信息
n 显示调用栈的每帧编号
f 显示调用栈的每帧占用字节数
默认情况下使用k显示当前线程栈,如果加上线程命令前缀,可以查看某个线程栈,如~* k查看所有线程栈
如kbnf 10 显示10层调用栈,包含函数参数、栈编号、占用字节数

切换栈帧:.frame 切换栈帧

与dv命令一起可以查看每帧的局部变量

显示局部变量: dv

常用的参数:
/i 显示变量是局部的、全局的、参数、还是函数等信息
/v 显示变量所在地址
/t 显示变量的类型

线程相关: ~

线程命令是以~开始,后面跟线程id(不是tid,是windbg从0开始的一个编号),或者.,#,*等
~. 表示当前线程
~# 表示异常或者产生调试事件的线程
~* 表示所有线程
~1 表示一号线程
~2 s 表示选择2号线程作为当前线程
~3 f 冻结三号线程
~3 u 解冻三号线程
~2 n 挂起二号线程
~2 m 恢复二线程
线程指令还可以与其他指令混合使用,如查看某一个线程的栈:
~1 k 查看一号线程的栈
~* k 查看所有线程的栈
如只想让某个线程激活断点,可以使用
~ 1 bp CPeListCtrl::ShowExportFuncs 对一号线程下断点

发表评论

电子邮件地址不会被公开。 必填项已用*标注