gdb是Linux下的代码调试工具,在使用时要加 -g选项,
开始:gdb file;退出:Ctrl+d或q。
gdb调试多进程与多线程
默认设置下,在调试多进程程序时GDB只会调试主进程。但是GDB(>V7.0)支持多进程的分别以及同时调试,换句话说,GDB可以同时调试多个程序。只需要设置follow-fork-mode(默认值:parent)和detach-on-fork(默认值:on)即可。
设置方法:
set follow-fork-mode [parent|child]
set detach-on-fork [on|off]
进程、线程调试命令
- info inferiors :查询正在调试的进程
- inferior (infer number):切换调试的进程
- add-inferior [-copies n] [-exec executable] :添加新的调试进程 , 可以用file executable来分配给inferior可执行文件。
- info threads : 查询线程
- thread (thread number): 切换调试线程:
- 常用命令
- run/r 运行程序
- next/n :单步执行
- cont/continue/c :从当前位置开始连续执行
- cont n :跳过n次断点继续执行
- until h(行号) :直接跳至h行
- step/s 进入函数调用
- list/l 行号:显示源代码,每次显示10行
- list/l 函数名:列出该函数的源代码
- break/b 行号或函数名 :打断点
- tbreak 行号:设置临时断点,在设置之后只起作用一次
- info b:查看断点信息
- delete breakpoints :删除所有断点
- delete breakpoints n :删除序号为n的断点
- clear 要清除的断点所在的行号 :删除断点
- disable breakpoints :禁用断点
- enable breakpoints :启用断点
- set var:修改变量的值
- display 变量名:跟踪变量,每次停下来都显示该变量的值
- undisplay :取消变量跟踪
- print/p 变量名 :打印变量的值
- breaktrace/bt :查看各级函数及参数
- info i(locals):查看当前栈帧局部变量的值
- watch 变量或表达式:设置观察点
- awatch 变量或表达式 :增加观察点
- forward/search 字符串 :从当前行向后查找匹配某个字符串的程序行
- reverse/search 字符串:与forward/search相反
centos6.5安装gdb:root用户下输入命令 yum install gdb