学习啦 > 学习电脑 > 操作系统 > Linux教程 > linux下gdb常用的调试命令

linux下gdb常用的调试命令

时间: 志艺942 分享

linux下gdb常用的调试命令

  用gdb调试程序时,常常很困惑一些命令的使用,要么是不知道这个命令,要么忘了命令的使用方法。接下来是小编为大家收集的linux下gdb常用的调试命令,希望能帮到大家。

  linux下gdb常用的调试命令

  gdb常用:

  run 启动程序运行

  next 单步执行(不到函数内部)

  step 单步执行,跟踪到函数内部

  finish 继续执行,直到当前函数结束

  continue 继续执行,直到下一个断点

  jump 9 直接跳到指定行

  list 显示源码

  l 3,10 显示特定范围的源码 l main显示函数的源码

  set listsize 50 修改源码显示行数

  break 设置断点

  b main设置函数断点

  b 9 设置指定行断点

  b 将下一行设置为断点

  b test if a == 10 设置条件断点

  delete 删除断点

  d 3 删除指定的断点

  condition 修改条件 condition 4 a == 90

  info 查看信息

  info threads 查看线程信息

  info breakpoints 查看断点信息

  info locals 显示局部变量

  info args 显示函数变量

  info registers 显示寄存器数据

  thread 2 切换线程

  where 查看调用堆栈(bt 或者 info s)

  frame 查看当前堆栈帧

  frame 8 查看指定堆栈帧信息

  info frame 查看当前堆栈帧更详细的信息

  print a 打印变量信息

  print/x a 十六进制输出变量信息

  print a + b 可以进行表达式计算

  print $eax 显示某个寄存器的数据

  x/nfu 0×300098 显示指定地址的内存数据

  n 显示内存单位,长度

  f 格式(除了 print 格式外,还有 字符串s 和 汇编 i)

  u 内存单位(b: 1字节; h: 2字节; w: 4字节; g: 8字节)

  set vairiable a = 100 可以修改变量的值

  commands 指定到了特定断点后执行的命令序列

  whatis buf 显示变量的类型

  dump memory 输出文件名 内存起始地址 内存终止地址

  restore 文件名 binary 起始位置

  watch buf buf的值一旦改变,会触发watchpoint

  奇淫技巧:

  cat ~/.gbinit gdb会从这个文件读取配置

  cat ~/.gdb_history

  呵呵,对于gdb时想要查看长的字符串老是显示不全,怎么半呢,gdb参看数组字符串时默认只是显示部分的数据,通过这个命令可以修改:

  set print elements 0 默认这里设置是200,设置为0表示没有限制

  还有其它一些set命令可以试试:

  set print address

  set print address on

  打开地址输出,当程序显示函数信息时,GDB会显出函数的参数地址。系统默认为打开的

  set print object <on/off>

  在C++中,如果一个对象指针指向其派生类,如果打开这个选项,GDB会自动按照虚方法调用的规则显示输出,如果关闭这个选项的话,GDB就不管虚函数表了。这个选项默认是off

  show print pretty

  查看GDB是如何显示结构体的

  set print array

  set print array on

  打开数组显示,打开后当数组显示时,每个元素占一行,如果不打开的话,每个元素则以逗号分隔。这个选项默认是关闭的

  set print null-stop <on/off>

  如果打开了这个选项,那么当显示字符串时,遇到结束符则停止显示。这个选项默认为off

  set print pretty on

  如果打开printf pretty这个选项,那么当GDB显示结构体时会比较漂亮

  set print union <on/off>

  设置显示结构体时,是否显式其内的联合体数据。例如有以下数据结构

  p string+n显示偏移n后的字符串内容,这个使用起来也是比较方便的


看了“linux下gdb常用的调试命令”还想看:

1.linux如何调试多进程程序

2.c++程序员简历模板

3.Linux系统查看当前时间的命令

4.Linux命令行中网速怎么测试

5.必学100个常用linux命令大全

2805207