使用gdb调试程序,在编译程序是加-g选项
1、gdb a.out 启动gdb调试
2、r 或 run,运行程序
3、b 或 break,设置断点
4、enable 断点号,disable 断点号, 使能或不使能断点
5、delete 断点号, 删除断点
6、c 或 continue,断点将程序停止后,使用此命令继续执行程序
7、b 行号 if i==5 ,即格式为:break....if<condiftion>,设置条件断点
8、p 或 print 打印变量
9、s 或step,单步运行,进入函数
10、finish 退出函数
11、n 或next 单步调试,不进入函数
12、p static_arr_name 打印静态数组
13、p *dynamic_arr_name@elements_count 打印动态数组
14、bt 或 backtrace 察看堆栈
15、frame number 察看堆栈第number号帧。堆栈的每一层叫一帧
16、down 或up 上下察看堆栈帧
17、disassemble 函数名 ,反汇编指定函数
18、display /i $pc ,设置自动显示变量,显示当前指令的汇编代码
19、info break 察看断点
20、set args 10 20 30 40,设置命令行参数
21、show args 显示命令行参数
22、set env path[=value]设置环境变量
23、show paths 显示环境变量
24、shell + 命令,在gdb中执行shell命令
25、run > outfile,在gdb中重定向输出
26、tty /dev/ttyb, 在gdb中重定向输入输出文件
27、info program 察看当前调试程序的状态
28、condition 断点号 停止条件,更改条件断点的条件
29、commands 断点号
命令1
命令2
。。。。
命令n
end //当程序在指定断点处停下时执行相应命令
30、l 或list ,察看源代码
31、print输出格式
例:p /t i ,以二进制显示变量i
32、jump 行号或函数名 跳转执行
33、p {type}0x7efa000000 按指定类型type,打印指定地址0x7efa000000的内容
34、p obj@num 打印指定长度num个对象obj
35、x(examine)/12w 0x7efa000000 查看指定内存出开始的12个字的内容