windbg 学习
常用的 windbg 命令
- .ecxr 用来切换到异常发生时的上下文,主要用在分析静态 dump 文件的时候。当我们使用 .reload 命令去强制加载库的 pdb 文件后,需要执行 .ecxr 命令,重新切换到异常上下文
- kn/kv/kp 用来查看当前线程的函数调用堆栈。如果要查看当前进程的所有线程的函数调用堆栈,可以使用 ~*kn 命令
- lm 用来查看库的信息,比如库的路径、时间戳、库的加载地址等。一般使用模糊匹配的模式,比如:lm vm codec*
- .reload 用来加载pdb文件,一般用来强制加载某个 pdb 文件,比如:.reload /f kdcodec.dll。注意这个命令中的名称要使用完整的文件名称
- !anallyze -v 输出当前异常的详细分析信息
- g 在中断模式下,跳过中断,继续运行,主要用于实时调试的场景
- bp/bl/bc 添加、查看、删除断点,主要用于实时调试的场景
- ~ns 切换到 n 号线程中,在 GUI 应用程序中,UI 线程为 0 号线程,是 GUI 程序的主线程
- .dump 创建一个用户模式或内核模式的转储文件,比如 .dump /ma C:\1125.dmp
- r 显示当前线程所有寄存器的值
- .cls 清除当前屏幕显示
也可以在 windbg 的 help 选项卡下选择 index 查看命令