gdb的作用:
- 启动程序,指定任意可以影响程序的参数
- 让程序在指定条件下暂停
- 测试程序停止时发生事情
- 改变程序内部变量,改正错误继续运行
gdb的使用:
- gdb + 可执行文件
- gdb + 可执行文件 + core
- gdb + 进程名 + 进程ID
调试命令:
- break 设置断点:
- break function 设定到指定的函数
- break linenum 设定到行号
- break +/- offset 当前行号前后
- break filename:linenum 指定文件的多少行
- break if<condition> 条件成立时停住
- info breakpoints[n] 查看断点信息
- delete breakpoints[n] 删除断点
- disable breakpoints[n] 禁用断点
- enable breakpoints[n] 启用断点
- watch <expr> :变量发生变化时中断 rwatch <expr> 读时中断 awatch <expr> 被写或者读中断
- run[ ] :启动程序附带参数
- bt(backtrace) 显示堆栈信息
- print expr:显示表达式的值
- c :继续执行程序(例如断电处停止)
- next:执行下一行代码(跨过函数调用)
- edit [file:]function :查看程序停的位置
- list[file:] function :显示程序停住的附近的代码
- step:单步调试,进入函数内部
- quit:退出程序
- continue 继续运行程序直到下一个断点
-
until 运行至当前语句块结束
-
finish 运行至函数结束并跳出,并打印函数的返回值
-
layout src (源代码)、regs(寄存器)、asm(汇编)、split(源代码和汇编) :显示窗口 ,control + x ,再按a退出窗口
-
disassemble :查看汇编代码,/m 源码和汇编一起排列