GDB是C++的调试工具,编译的时候加上-g选项即可。简单方便,可以一步一步进行调试。
1. b + 函数名或者文件:行数。设置断点,运行的时候可以在断点处卡住。
2. start:卡在main函数第一行,只加载动态,静态库等预处理程序。不执行。
2.1:有些动态库的函数一开始没有被加载进来。必须使用这个命令才能把动态库的函数也加载进来。
2.2:有些程序执行需要带参数。可以 start后跟参数即可。
3. run:直接开跑。
4. set args:设置运行参数。就是./main 1 2 3,后面的1 2 3
5. c: 跳到第一个被设置的断点处。
6. i locals : 查看所有当前函数的临时变量。
7. i threads : 查看进程的所有线程。
8. p + 变量 : 查看当前变量,可执行简单的->, *, 加减乘除等操作。
9. l : 查看附近代码。
10. n: 执行这一行,跳到下一行。
11. s:跳到执行到的当前函数里面。
12. bt:查看函数栈。(重要)
13. t + 线程号,进入某个线程。
14. up : 向栈顶移动。
15.down:向栈底移动。
16.attach + 进程号,进入死循环了的进程。然后配合 i threads,t + thread id等命令使用。
17.i register 查看寄存器内的值。其中每层函数栈都不同。
18. dess+table 可以看到汇编代码。