编译程序时需要加上-g,之后才能用gdb进行调试:gcc -g main.c -o main
    调试开始:执行gdb [exefilename] ,进入gdb调试程序,其中exefilename为要调试的可执行文件

    1. ## 以下命令后括号内为命令的简化使用,比如run(r),直接输入命令 r 就代表命令run
    2. $(gdb) help(h) # 查看命令帮助,具体命令查询在gdb中输入help + 命令
    3. $(gdb) run(r) # 重新开始运行文件(run-text:加载文本文件,run-bin:加载二进制文件)
    4. $(gdb) start # 单步执行,运行程序,停在第一行执行语句
    5. $(gdb) list(l) # 查看原代码(list-n,从第n行开始查看代码。list+ 函数名:查看具体函数)
    6. $(gdb) set # 设置变量的值
    7. $(gdb) next(n) # 单步调试(逐过程,函数直接执行)
    8. $(gdb) step(s) # 单步调试(逐语句:跳入自定义函数内部执行)
    9. $(gdb) backtrace(bt) # 查看函数的调用的栈帧和层级关系
    10. $(gdb) frame(f) # 切换函数的栈帧
    11. $(gdb) info(i) # 查看函数内部局部变量的数值
    12. $(gdb) finish # 结束当前函数,返回到函数调用点
    13. $(gdb) continue(c) # 继续运行
    14. $(gdb) print(p) # 打印值及地址
    15. $(gdb) quit(q) # 退出gdb
    16. $(gdb) break num # 在第num行设置断点(b num)
    17. $(gdb) info breakpoints # 查看当前设置的所有断点
    18. $(gdb) delete breakpoints num(d) # 删除第num个断点
    19. $(gdb) display # 追踪查看具体变量值
    20. $(gdb) undisplay # 取消追踪观察变量
    21. $(gdb) watch # 被设置观察点的变量发生修改时,打印显示
    22. $(gdb) i watch # 显示观察点
    23. $(gdb) enable breakpoints # 启用断点
    24. $(gdb) disable breakpoints # 禁用断点
    25. $(gdb) x # 查看内存x/20xw 显示20个单元,16进制,4字节每单元
    26. $(gdb) run argv[1] argv[2] # 调试时命令行传参
    27. $(gdb) set follow-fork-mode child#Makefile项目管理:选择跟踪父子进程(fork()

    image.png