zoukankan      html  css  js  c++  java
  • gdb常用命令

    1. 1.0如何使可执行程序变为可调试

      gcc -g -o test test.c        // -g 编译选项使test可执行程序拥有可调试属性

    2. 1.1如何启动gdb调试工具

      a.启动gdb但不调试可执行文件:gdb

        载入待调试文件:(gdb)file test

      b.启动gdb并调试可执行文件:gdb test

      c.其它启动方式暂不列举

    3. 1.2查看源程序代码

      list <line-num>  显示指定行前后的代码

      list <func>  显示函数代码

      list   显示当前行前后的代码

      list + 从当前行往后显示代码

      list - 从当前行往前显示代码

      list <first>,<last>  显示first行与last行之间的代码

      list ,<last> 显示当前行到last行之间的代码

      ------   ------   ------   ------   ------   ------   ------   ------   ------   ------

      扩展:

      set listsize <count> 设置一次list命令显示代码的行数,默认设置显示10行

      show listsize 查看当前设置listsize的值

    4. 1.3查看源代码的内存

      info line [行号][函数名][文件名:行号][文件名:函数名]

    5. 1.4查看单个数据(如果编译器优化将一些变量优化掉可能导致查看不到)

      print <expr>  //expr可是变量名,表达式

      print /<format> <expr>  //关于数据的显示格式暂且不讲

      使用gdb的print查看程序运行时的数据,每个print都会被gdb记录下来,以$1、$2、$3……的方式为每一print命令编号,后面可以直接使用这个编号访问以前的表达式,如print $2。这样避免的重复输入表达式。

      ------   ------   ------   ------   ------   ------   ------   ------   ------   ------

      p file::variable   查看文件作用于变量

      p function::variable  查看函数作用域变量

    6. 1.5修改变量的值

      print x=4   将x赋值为4并打印x的值

      set var width=47  将width的值设置为47

      ------   ------   ------   ------   ------   ------   ------   ------   ------   ------

      补充:查看变量的类型

      whatis varName  查看变量varName的类型

    7. 1.6查看连续内存空间的值

           1.6.1动态分配的连续内存

            int *array = (int*)malloc(…)

            print *array@len   注意是"*array"格式,len表示查看元素的个数

            1.6.2静态数组

            print 数组名

    8.  

      1.7自动显示的变量值的相关命令。已经设置后的变量,当每执行一个调试命令后会自动显示在调试界面中。

      display <expr>  设置要自动显示值的变量

      display /<fmt> <expr>  设置要自动显示的变量及数据的显示格式

      ------   ------   ------   ------   ------   ------   ------   ------   ------

      undisplay  display <dnum>  删除一个自动显示变量

      delete display <dnum> 删除一个自动显示变量

      undisplay/delete display <dnum1~dnum5> 删除一个范围内的自动变量

      ------   ------   ------   ------   ------   ------   ------   ------   ------

      disable/enable display <dnum> 禁用/启用一个自动显示变量

      ------   ------   ------   ------   ------   ------   ------   ------   ------

      9.

      info display 查看设置的自动显示变量

      ist(l):显示代码及其行数

      break(b) 行数:设置断点

      r:运行程序

      p 变量名:输出变量的值

      c:继续

      clear 行数:取消断点

      quit(q):退出gdb

      s:单步调试,并进入函数内部

      n:单步调试,不进入函数内部

      whatis 变量名:查看变量类型

      bt:查看堆栈信息

  • 相关阅读:
    [LeetCode] 1092. Shortest Common Supersequence
    [LeetCode] 1091. Shortest Path in Binary Matrix
    [LeetCode] 1090. Largest Values From Labels
    [LeetCode] 1089. Duplicate Zeros
    git log
    Java-Note
    (转载)深入解析String#intern
    Android——LruCache源码解析
    (转载)gcc编译选项总结
    Java——LinkedHashMap源码解析
  • 原文地址:https://www.cnblogs.com/linear/p/6814679.html
Copyright © 2011-2022 走看看