Linux调试器-gdb使用

目录

一、gdb的使用

二、查看可执行程序的信息(readelf)

三、gdb常用的指令

1. 显示源代码(list/l)

2. 运行程序(r或run)

3. 在某一行设置断点(b指令)

4. 显示断点(info b)

5. 删除断点

6. 调试(r)

7. 禁止和启用断点(disable和enable)

8. 单条执行(逐过程执行)(n 或 next)

9. 进入函数调用(s或step)

10. 打印变量值(p)

11. 长期监视/取消监视变量的值(display指令/undisplay指令)

12. 跳至指定行

13. 运行到当前函数的结尾(finish)

14. 从一个断点直接运行到下一个断点处(c)

15. 显示调用堆栈(bt)

16. 修改变量的值:set var

17. 显示当前函数内临时变量:info locals 


一、gdb的使用

  • 在 Linux 中使用默认的编译器进行代码编译时,会采用 release 模式
  • 要生成带有调试信息的可执行文件,您需要在编译命令中添加-g选项,这样生成的程序就是 debug 版本
  • debug版本发布的可执行程序的大小比release版本发布的可执行程序的大小要大一点,因为以debug版本发布的可执行程序内部包含了更多的调试信息 

 Linux调试器-gdb使用_第1张图片

二、查看可执行程序的信息(readelf)

  • readelf 是一个在 Linux 系统中可以用来查看 ELF(可执行与可链接格式)文件信息 
readelf -S mybin_g //命令用于查看 ELF 文件 mybin_g 的节头表信息
                   //包括名称、类型、大小、地址、偏移等

 

Linux调试器-gdb使用_第2张图片

 

readelf -S mybin_g | grep -i debug//使用 readelf -S mybin_g 列出了所有节的信息
//通过管道 | 将输出传递给 grep -i debug 命令,其中 grep 是用于在文本中搜索指定模式的命令
//而 -i 选项表示忽略大小写

 Linux调试器-gdb使用_第3张图片

三、gdb常用的指令

Linux调试器-gdb使用_第4张图片 

Linux调试器-gdb使用_第5张图片 

Linux调试器-gdb使用_第6张图片 

1. 显示源代码(list/l)

 Linux调试器-gdb使用_第7张图片

 Linux调试器-gdb使用_第8张图片

2. 运行程序(r或run)

 

3. 在某一行设置断点(b指令)

b 18//在第18行设置断点

Linux调试器-gdb使用_第9张图片

4. 显示断点(info b)

5. 删除断点

  • delete breakpoints:删除所有断点
  • delete breakpoints n:删除序号为n的断点
  • 可以简写成d

Linux调试器-gdb使用_第10张图片 

Linux调试器-gdb使用_第11张图片

6. 调试(r)

7. 禁止和启用断点(disable和enable)

  • disable breakpoints:禁用断点
  • enable breakpoints:启用断点

 Linux调试器-gdb使用_第12张图片

8. 单条执行(逐过程执行)(n 或 next)

Linux调试器-gdb使用_第13张图片

9. 进入函数调用(s或step)

Linux调试器-gdb使用_第14张图片

10. 打印变量值(p)

Linux调试器-gdb使用_第15张图片

11. 长期监视/取消监视变量的值(display指令/undisplay指令)

 Linux调试器-gdb使用_第16张图片

 Linux调试器-gdb使用_第17张图片

12. 跳至指定行

until 11//跳转到11行

Linux调试器-gdb使用_第18张图片

13. 运行到当前函数的结尾(finish)

Linux调试器-gdb使用_第19张图片

14. 从一个断点直接运行到下一个断点处(c)

Linux调试器-gdb使用_第20张图片

15. 显示调用堆栈(bt)

Linux调试器-gdb使用_第21张图片

16. 修改变量的值:set var

set var i=100

17. 显示当前函数内临时变量:info locals 

你可能感兴趣的:(Linux,linux,运维,服务器)