gdb调试基础
要使用gdb调试,gcc编译时要加上‘-g’选项,这样生成的可执行文件才能被gdb调试。
基础指令
- l(list):表示查看源代码,后可跟数字num如:l num,表示查看代码的位置。
- b(break):表示设置断点的位置。b 20 if i=5,用此种方式设置条件断点,即当for循环到i==5时才中断。
- delete:删除断点。
- r(run):运行程序。
- n(next):跳到下一条语句(如果是函数不进入)。
- s(step):跳到下一条语句(如果是函数进入)。
- p(print):p var,查看当前作用域内var的值。
- display:display var,设置跟踪变量,每次操作都会打印变量的值 ;要想取消的话用undisplay index,index为变量的编号。
- continue:继续执行程序。
- quit:跳出当前调试。
- finish:结束当前函数调用。
- ptype:查看变量的类型(运行到当前context下的作用域)。
- bt(backtrace):查看当前存活的栈帧。
- fram:根据栈帧编号切换栈帧。
- info:查看各种信息,如info f,查看当前栈帧信息;info line 查看指定行的源码在运行时的内存地址。
- set follow-fork-mode child/parent:设置gdb的跟踪对象是子进程还是父进程。