GDB调试

请注意,本文编写于 251 天前,最后修改于 251 天前,其中某些信息可能已经过时。

GDB调试

  1. 编译携带调试信息的可执行程序

    gcc编译时加上-g参数
    gcc *.c -o myapp -g
    
    因为携带调试信息,带-g参数生成的可执行文件体积会比不带-g参数的大,发布应用的时候一般取消—g参数生成可执行程序。
    
    进入调试
    gdb 带-g参数生成的可执行文件
  2. 使用gdb调试

    1. gdb调试

      1. start 只执行一步
      2. next(n) 继续执行 单步走 跳过函数
      3. step(s) 继续执行 单步走 可以进入到函数内部
      4. continue(n) 继续执行 直接停在断点位置
    2. 查看代码

      1. list(l)
      2. l 行号|函数名
      3. l 文件名:行号|函数名字
    3. 设置断点

      1. 设置文件断点

        1. break(b)
        2. b 行号|函数名
        3. b 文件名:行号|函数名
      2. 设置条件断点

        1. b 行号 条件 if value == 19
      3. 查看断点编号

        1. info (i) 查看信息
        2. i b 查看设置断点
      4. 删除断点

        1. detele(d)
        2. d 断点编号(通过info b查看断点信息获取编号)
      5. 开始执行gdb调试

        1. 执行一步操作 start
        2. 继续执行 n|s
        3. 执行多步,直接停在断点处
      6. 单步调试

        1. 进入函数体内部 s

          1. 从函数体内部跳出 finish 如果有断点则需要删除断点信息才能跳出
        2. 不进入函数体内部 n
        3. 退出当前循环 u
      7. 查看变量

        1. 查看变量的值 print(p) 变量名
        2. 查看变量的类型 ptype 变量名
        3. 设置变量的值 set var 变量名=赋值
        4. 设置追踪变量

          1. display 变量
        5. 取消设置追中变量

          1. undisplay 编号

            1. 获取编号 info display
      8. 退出gdb调试

        1. quit