GDB简易教程
调试选项
CMakeLists.txt
添加以下代码,-g
表示gcc编译的时候加上调试信息,Debug
版本表示带调试符号的软件版本
set(CMAKE_CXX_FLAGS "-g")
set(CMAKE_BUILD_TYPE Debug)
编译好的程序使用以下指令运行起来
gdb 程序名
运行程序
使用run
命令运行程序,也可以使用缩写r
(gdb) run
(gdb) r
代码片段
使用list
命令查看代码片段,也可以使用缩写l
(gdb) list
(gdb) l
运行/继续
使用continue
命令运行或者继续,也可以使用缩写c
(gdb) continue
(gdb) c
执行一行代码
使用next
命令执行一行代码,也可以使用缩写n
,遇到函数调用不会进入函数
(gdb) next
(gdb) n
设置断点
使用break
或者缩写b
命令设置一个断点
(gdb) break 行号
(gdb) break 断点编号 if 条件判断
(gdb) b 行号
(gdb) b 断点编号 if 条件判断
(gdb) b 文件名:行号
(gdb) b 函数名
删除断点
使用delete
、del
、d
可以删除指定编号的断点
(gdb) delete 断点编号
(gdb) del 断点编号
(gdb) d 断点编号
设置断点无效
暂时不想用断点可以用disable
、dis
命令暂时使其无效
(gdb) disable 断点编号
(gdb) dis 断点编号
设置断点生效
ena
、enable
命令使能断点
(gdb) ena 断点编号
(gdb) enable 断点编号
单步调试
step
命令遇到函数会进入跟next命令不一样,也可以用缩写s
(gdb) step
(gdb) s
当前堆栈
使用bt
命令可以查看当前执行的堆栈列表,可以查看到用数字编码的堆栈列表
(gdb) bt
查看当前帧
使用frame
命令可以查看当前执行的堆栈帧所在位置,也可以使用缩写f
(gdb) frame
(gdb) f
回溯切换堆栈帧
通过帧号设置可以回溯(跳转)当前执行的堆栈位置,up
、down
命令可以设置帧号增减
(gdb) frame 帧号
(gdb) up
(gdb) down
打印变量
print
命令用于查看变量的值,也可以用缩写p
(gdb) print 变量名
(gdb) p 变量名
变量类型
ptype
命令用于查看指定变量的类型
(gdb) ptype 变量名
查看所有线程
如果想查看当前程序实例有多少个线程,可以使用以下命令
(gdb) info threads
查看局部变量
如果想查看当前执行位置的所以局部变量,可以使用以下命令
(gdb) info locals
查看传入参数
如果想查看当前函数所有入参,可以使用以下命令
(gdb) info args
查看异常信息
如果想查看当前当前程序的异常信息,可以使用以下命令
(gdb) info catch
不懂就问
使用help
命令可以查看一些命令的用法
(gdb) help
远程调试
连接gdbserver使用以下格式指令
(gdb) target remote IP地址:端口号
图形化界面
调试源代码比较多的时候使用特别是cpp代码
gdb -tui
阅读剩余
版权声明:
作者:hywing
链接:https://iotstuff.cn/gdb-easy-tutorial/
文章版权归作者所有,未经允许请勿转载。
THE END