一、启动 gdb
1. 启动 gdb, 并且分屏显示源代码:
$gdb -tui
使用了”-tui”选项,启动时可以直接将屏幕分成两部分,上面显示源代码,比用 list 方便多了。这时候使
用上下方向键可以查看源代码,想要用命令行 ctrl + n 和 ctrl + p
2. 启动 gdb 调试指定的程序 app:
$gdb app
在启动 gdb 之后直接载入 app 可执行程序。编译 app 程序必须要有-g 选项
3. 启动 app 程序之后,再启动 gdb 调试:
$gdb <PID>
这里,程序是一个服务程序,那么你可以指定这个服务程序运行时的 PID,这样 gdb 就附加到程序上
了。
二、载入指定的程序
(gdb) le app
在启动了 gdb 之后,可以用这个命令载入 app 程序。
三、退出调试
kill(简写 k),异常终止被调试的程序:(gdb) kill
quit(简写 q),退出 gdb: (gdb)quit
四、常用命令
1. 运行程序:r 或 run
2. 设置断点:b 或 break
1) 在当前文件的某一行设置断点:b line_number
2) 在当前的文件中的某一函数处设置断点:b func_name
3) 在文件的某一行设置断点:b lename:line_number, 例如 b spl.c:252
4) 在某个指令地址处设置断点:b *address, 例如 b *0x2ade4
5) 在文件的某一函数处设置断点:b lename:func_name
6) 条件断点 break if,如果条件为真,程序到达指定行或函数时暂停运行:
(gdb) b line_or_func if condition
例如:b 46 if testsize==100
7) 在线程中设置断点:b thread [thread_number]
thread_number 是线程 ID,通过 info threads 查看运行中程序的线程信息。
8) condition(简写 cond):与 break if 类似,只是 condition 只能用在已存在的断点上。
(gdb)condition <breakpoint_list> (condition)
例如:cond 3 i==3
1