您的位置:首页 > 其它

GDB 常用命令 ***

2017-09-28 10:47 134 查看
运行:

  (gdb)  r

命令行带参:

  (gdb)  r  "参数1" "参数2"

  (gdb)  set args "参数1" "参数2"  //set args 10 20 40

查看/设置 运行环境:

  (gdb)  show args     //查看命令行参数

  (gdb)  show paths    //查看运行路径  

  (gdb)  show env     //查看环境变量

  (gdb)  set evn LINES=25  //设置环境变量  

设置断点 break:

  (gdb)  b  function

  (gdb)  b  linenum

  (gdb)  b  + offset

  (gdb)  b  - offset

  (gdb)  b  filename:function

  (gdb)  b  filename:linenum

  (gdb)  b  *address

  (gdb)  b  xxx  if <condition>    //b 18 if i==50

设置观察点:

  (gdb)  watch  expr    //表达式expr变化则停止

  (gdb)  rwatch  expr    //表达式expr被读时停止

  (gdb)  awatch  expr    //表达式expr被读写时停止

查看断点/观察点 info:

  (gdb)  i

  (gdb)  i locals    //显示当前函数所有局部变量的值

  (gdb)  i b 3    //查看第三个断点

  (gdb)  i watchpoints

  (gdb)  i watchpoints n

设置自动显示:

  (gdb)  display i

  (gdb)  display $pc    //显示当前内存地址

删除自动显示:

  (gdb)  delete display dnum

  (gdb)  disable display dnum

  (gdb)  enable display dnum

停止维护点:

  (gdb)  delete

  (gdb)  clear      

  (gdb)  disable

  (gdb)  enable

  例子:

    clear          //清楚所有停止点

    clear  function    //清除该函数内部的所有停止点

    clear  filename:function

    clear  linenum    //清除某行上的停止点

    delete  n

    delete  n1-n2

    disable  n

    enable  n

单步调试next/step:

  (gdb)  n    //逐行执行语句,不进入函数体内部

  (gdb)  s    //逐行执行语句,进入函数内部 

 

查看源程序list:

  (gdb)  list  first,last

  (gdb)  list  linenum

查看运行数据print:

  print /<f> n    //显示变量n的值

  print /<f> ::n    //显示全局变量n的值

  print /<f> array  //显示数据的值

  print /<f> *array@length    //显示动态分配数组的值

  /<f>:为显示格式,其值为:x/d/u/o/t/a/c/f

查看变量类型:

  (gdb)  whatis  var        //获取变量的类型

  (gdb)  ptype  var/structname   //获取结构体定义 

  (gdb)  where            //函数的调用关系链

查看内存:

  (gdb)  x addr    //查看内存

  (info)  line n    //显示第n行的内存地址

改变程序执行流程:

  (gdb)  print i=10    //赋值

  (gdb)  print function  //执行一次函数

  (gdb)  set var i=15

  (gdb)  jump  linenum

  (gdb)  jump  address

  (gdb)  call  function    //强制调用函数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: