单纯只是自己在写ECE637这门课的时候想把代码吃透一些才搞这些的,开这篇文章也只是单纯的自己记性不好而已。
一些基础操作可以参考的网站:gdb 调试利器
一般操作
1. 带参数的gdb
You can run gdb with --args parameter
gdb --args executablename arg1 arg2 arg3
Or you can enter gdb
and then use command:
set args arg1 arg2 arg3
2. 切换tui窗口
方案一:
gdb -tui executablename
方案二:
先使用gdb
命令再利用ctr
+ X
+ A
来切换
3. 设置断点的一些需要记忆的
大妈我特别健忘…
- break n (简写b n):在第n行处设置断点
(可以带上代码路径和代码名称: b OAGUPDATE.cpp:578) - b fn1 if a>b:条件断点设置
- break func(break缩写为b):在函数func()的入口处设置断点,如:break cb_button
- delete 断点号n:删除第n个断点
- disable 断点号n:暂停第n个断点
- enable 断点号n:开启第n个断点
- clear 行号n:清除第n行的断点
- info b (info breakpoints) :显示当前程序的断点设置情况
- delete breakpoints:清除所有断点:
4. 跳出当前function
You can use the finish command.
finish: Continue running until just after function in the selected stack frame returns. Print the returned value (if any). This command can be abbreviated as fin.
遇到的一些Error
1. no debugging symbols found
报错
Reading symbols from Example...(no debugging symbols found)...done.
需要在gcc
编译的时候加上-g
或者是在Makefile文件里面做相应的修改