windbg的常见调试命令
1).break:在指定的条件下停止调试。
2).bt:显示调用堆栈信息。
3).catch:设置异常捕获,可以用来捕获程序中的异常并进行调试。
4).continue:继续执行被调试的程序。
5).do .until:执行一条或多条调试命令,直到指定的条件为真或为假。
6).do .while:执行一条或多条调试命令,当指定的条件为真时重复执行。
7).if .else .endif:根据条件执行调试命令。
8).log .if:当指定的条件为真时,将一条记录添加到调试日志中。
9).next:单步执行被调试的程序,并显示每个执行步骤的堆栈跟踪信息。
10).step:单步执行被调试的程序,但不在进入子函数时停在第一行。
11).tbreak:设置临时断点,当程序执行到该断点时暂停,并显示调用堆栈信息。
12).tdump:将当前进程的内存转储文件(.dmp)保存到指定路径。
13)!address:显示内存地址的详细信息,例如内存页权限、分配的内存块等。
14)!peb:显示Process Environment Block(PEB),可以用来查看进程的相关信息。
15)lm:显示加载模块的详细信息,例如模块的名称、大小、地址等。
16)!process:显示进程信息,可以用来查看进程的名称、ID、创建时间等。
17)!stack:显示调用堆栈信息,可以用来分析函数调用顺序和参数传递情况。
18)!uniqstack:显示所有线程的调用堆栈信息。
19)!symbol:显示符号表信息,可以用来查找和解析符号名称。
20)kv:显示调用堆栈信息,可以用来分析函数调用顺序和参数传递情况。
21)!peb:显示Process Environment Block(PEB),可以用来查看进程的相关信息。
22)lm:显示加载模块的详细信息,例如模块的名称、大小、地址等。
23)!stack:显示调用堆栈信息,可以用来分析函数调用顺序和参数传递情况。
24)!uniqstack:显示所有线程的调用堆栈信息。
25)!dlls:显示加载的dll文件及其路径。
26)dt:显示数据结构信息,可以用来查看特定内存地址处的数据结构。
27).frame:显示当前栈帧信息,可以用来查看当前执行上下文中的函数调用顺序和参数值。
28).frame n:将编号为n的栈帧设置为当前栈帧,可以用来在不同的函数调用之间切换。
29).frame /r n:将编号为n的栈帧设置为当前栈帧,并显示寄存器变量的值。
30)!uniqstack:显示所有线程的调用堆栈信息,可以用来分析多线程程序中的执行流程。
31).attach [pid]:附加到一个正在运行的进程上,pid为进程的标识符。
32)!dump /m [filename]:生成一个内存转储文件(memory dump),并保存到指定的文件路径。
33)!dump /ma [filename]:生成一个带有尽量多选项的内存转储文件,例如完整的内存内容、句柄、未加载的模块等。
34)!analyze -v:对内存转储文件进行分析,并显示详细的结果。
35).sympath:查看当前的符号查找路径,可以用来设置符号文件的查找路径。
36).sympath+ [path]:将指定的路径添加到符号查找路径中。
37)!sym noisy:显示调试过程中产生的符号加载信息。
38)!sym quiet:停止显示符号加载信息。
39)!threads:显示当前进程的所有线程信息。
40)!thread [tid]:显示指定线程的调用堆栈信息。
41)!sc:显示当前进程的句柄、线程、事件等信息。
42)!handle [type] [value]:显示符合指定类型或值的句柄信息。
43)!peb:显示Process Environment Block(PEB),可以用来查看进程的相关信息。
44)lm:显示加载模块的详细信息,例如模块的名称、大小、地址等。
45)!process:显示进程信息,可以用来查看进程的名称、ID、创建时间等。
46)!stack:显示调用堆栈信息,可以用来分析函数调用顺序和参数传递情况。
47)!sym:显示符号表信息,可以用来查找和解析符号名称。
48).lines:显示当前源代码文件中的行号信息,可以用来定位代码位置。
49).locals:显示当前函数中的局部变量信息,可以用来查看函数参数和局部变量的值。
50).forcelist:强制列出当前源代码文件中的所有函数信息,包括函数名、偏移量、返回值等。