linux中已经安装了vscode,可以对程序进行调试,为什么还需要GDB命令行
GDB是一个功能强大的命令行调试器,可以帮助程序员在程序崩溃或出现其他问题时进行调试。虽然VScode可以在图形界面下进行调试,但是GDB命令行调试器可以提供更加详细的信息和更加灵活的调试方式。此外,GDB还可以在没有图形界面的环境下进行调试,比如在服务器上进行远程调试。因此,尽管VScode可以进行调试,但是GDB命令行调试器仍然是一个非常有用的工具。
linux中,不借助IDE环境,我们可以通过命令行完成代码的开发、编译、和调试:
开发程序(命令行系統,没有IDE)中写代码,用vim;
调试用 gdb (打断点、单步调试、看变量值)(程序的逻辑错误);
编译用gcc
是不是我们在IDE调试时,干的事情一模一样?
调试开始:执行gdb [exefilename] ,进入gdb调试程序,其中exefilename为要调试的可执行文件名
- ## 以下命令后括号内为命令的简化使用,比如run(r),直接输入命令 r 就代表命令run
-
- $(gdb)help(h) # 查看命令帮助,具体命令查询在gdb中输入help + 命令
-
- $(gdb)run(r) # 重新开始运行文件(run-text:加载文本文件,run-bin:加载二进制文件)
-
- $(gdb)start # 单步执行,运行程序,停在第一行执行语句
-
- $(gdb)list(l) # 查看原代码(list-n,从第n行开始查看代码。list+ 函数名:查看具体函数)
-
- $(gdb)set # 设置变量的值
-
- $(gdb)next(n) # 单步调试(逐过程,函数直接执行)
-
- $(gdb)step(s) # 单步调试(逐语句:跳入自定义函数内部执行)
-
- $(gdb)backtrace(bt) # 查看函数的调用的栈帧和层级关系
-
- $(gdb)frame(f) # 切换函数的栈帧
-
-
- $(gdb)info(i) # 查看函数内部局部变量的数值
-
- $(gdb)finish # 结束当前函数,返回到函数调用点
-
- $(gdb)continue(c) # 继续运行
-
- $(gdb)print(p) # 打印值及地址
-
- $(gdb)quit(q) # 退出gdb
-
- $(gdb)enter(回车) # 再次执行上一次的命令
- $(gdb)break+num(b) # 在第num行设置断点
-
- $(gdb)info breakpoints (i b) # 查看当前设置的所有断点
-
- $(gdb)delete breakpoints num(d) # 删除第num个断点
-
- $(gdb)display # 追踪查看具体变量值
-
- $(gdb)undisplay # 取消追踪观察变量
-
- $(gdb)watch # 被设置观察点的变量发生修改时,打印显示
-
- $(gdb)i watch # 显示观察点
-
- $(gdb)enable breakpoints # 启用断点
-
- $(gdb)disable breakpoints # 禁用断点
-
- $(gdb)x # 查看内存x/20xw 显示20个单元,16进制,4字节每单元
-
- $(gdb)run argv[1] argv[2] # 调试时命令行传参
-
- $(gdb)set follow-fork-mode child#Makefile项目管理:选择跟踪父子进程(fork())

- #include
- using namespace std;
-
- int main(int argc,char **argv)
- {
- int N = 100;
- int sum = 0;
- int i = 1;
-
- // calculate sum from 1 to 100
- while (i <= N)
- {
- sum = sum + i;
- i = i + 1;
- }
-
- cout << "sum = " << sum << endl;
- cout << "The program is over." << endl;
-
- return 0;
- }
1、进入调试模式 : 执行gdb [exefilename]
2、给指定行打断点和显示断点信息实验
用到了 break、info breakpoints 命令

3、小练习:line 13打断点,查看几次 i的值
用到了 break、run、print、continue、display、回车
4、查看以断点行 为中心的前后 n 行代码
list n

linux下gdb调试方法与技巧整理_gbd 调试opengausa-CSDN博客
随着技术发展,已经可以通过本地可视化GDB 通过ssh远程 服务器进行可视化代码调试了:
一文掌握vscode远程gdb调试_vscode gdb调试-CSDN博客
VsCode + gdb + gdbserver远程调试C++程序_vscode 远程调试 gdb_cuijiecheng2018的博客-CSDN博客 通过vscode进行嵌入式linux arm开发板gdb调试_arm gdb 和vscode关联-CSDN博客