调试选项

CMakeLists.txt添加以下代码,-g表示gcc编译的时候加上调试信息,Debug版本表示带调试符号的软件版本

1
2
set(CMAKE_CXX_FLAGS "-g")
set(CMAKE_BUILD_TYPE Debug)

启动调试

编译好的程序使用以下指令运行起来

1
gdb 程序名

运行程序

使用run命令运行程序,也可以使用缩写r

1
2
(gdb) run
(gdb) r

代码片段

使用list命令查看代码片段,也可以使用缩写l

1
2
(gdb) list
(gdb) l

运行/继续

使用continue命令运行或者继续,也可以使用缩写c

1
2
(gdb) continue
(gdb) c

执行一行代码

使用next命令执行一行代码,也可以使用缩写n,遇到函数调用不会进入函数

1
2
(gdb) next
(gdb) n

设置断点

使用break或者缩写b命令设置一个断点

1
2
3
4
5
6
(gdb) break 行号
(gdb) break 断点编号 if 条件判断
(gdb) b 行号
(gdb) b 断点编号 if 条件判断
(gdb) b 文件名:行号
(gdb) b 函数名

删除断点

使用deletedeld可以删除指定编号的断点

1
2
3
(gdb) delete 断点编号
(gdb) del 断点编号
(gdb) d 断点编号

设置断点无效

暂时不想用断点可以用disabledis命令暂时使其无效

1
2
(gdb) disable 断点编号
(gdb) dis 断点编号

设置断点生效

enaenable命令使能断点

1
2
(gdb) ena 断点编号
(gdb) enable 断点编号

单步调试

step命令遇到函数会进入跟next命令不一样,也可以用缩写s

1
2
(gdb) step
(gdb) s

当前堆栈

使用bt命令可以查看当前执行的堆栈列表,可以查看到用数字编码的堆栈列表

1
(gdb) bt

查看当前帧

使用frame命令可以查看当前执行的堆栈帧所在位置,也可以使用缩写f

1
2
(gdb) frame
(gdb) f

回溯切换堆栈帧

通过帧号设置可以回溯(跳转)当前执行的堆栈位置,updown命令可以设置帧号增减

1
2
3
(gdb) frame 帧号
(gdb) up
(gdb) down

打印变量

print命令用于查看变量的值,也可以用缩写p

1
2
(gdb) print 变量名
(gdb) p 变量名

变量类型

ptype命令用于查看指定变量的类型

1
(gdb) ptype 变量名

查看所有线程

如果想查看当前程序实例有多少个线程,可以使用以下命令

1
(gdb) info threads

查看局部变量

如果想查看当前执行位置的所以局部变量,可以使用以下命令

1
(gdb) info locals

查看传入参数

如果想查看当前函数所有入参,可以使用以下命令

1
(gdb) info args

查看异常信息

如果想查看当前当前程序的异常信息,可以使用以下命令

1
(gdb) info catch

不懂就问

使用help命令可以查看一些命令的用法

1
(gdb) help

远程调试

连接gdbserver使用以下格式指令

1
(gdb) target remote IP地址:端口号

图形化界面

调试源代码比较多的时候使用特别是cpp代码

1
gdb -tui

『 下里巴人 』
海纳百川,文以载道
hywing技术自留地
总访问 113701 次 | 本页访问 326