1 GDB基本概念
(1) GDB是GNU项目调试器,它允许在程序执行时查看“内部”发生了什么,或者在程序崩溃时正在做什么。
(2) GDB可以从以下4个方面来帮助你发现bug:
- 启动程序,明确指出可能影响其性能的任何内容。
- 使程序在指定条件下停止。
- 检查程序停止时发生了什么。
- 更改程序中的内容,这样你就可以尝试纠正一个错误的影响,并继续学习另一个错误。
这些程序可能与GDB(本机)在同一台机器上执行,也可能在另一台机器(远程)上执行,或者在模拟器上执行。GDB可以在最流行的UNIX和Microsoft Windows变体上运行,也可以在macOS上运行。
2 GDB调试支持的计算机语言
GDB支持以下编程语言(按字母顺序):
- Ada
- Assembly
- C
- C++
- D
- Fortran
- Go
- Objective-C
- OpenCL
- Modula-2
- Pascal
- Rust
3 进入与退出GDB
本章主要讨论怎样去启动和退出GDB,主要关键点如下:
- 输入“gdb”启动GDB;
- 输入quit, exit或Ctrl-d退出GDB;
3.1 调用GDB
通过运行gdb程序调用gdb,一旦启动,gdb将从终端读取命令,指导用户告诉它退出。
你也可以使用各种参数和选项运行gdb,以便在开始阶段指定更多需要调试的内容。
这些描述的命令行选项目的是涵盖各种情况;在某些环境下,其中一些选项实际上可能不可用。
启动gdb最常用的方法是配置一个参数,指定一个可执行程序:
gdb program
你也可以在启动时同时指定一个可执行程序和内核文件:
gdb program core
你也可以指定一个进程作为第二个参数,或者如果你想要调试正在运行的进程的话,可以使用 -p。
gdb program 1234
gdb -p 1234
如果你想把GDB关联到进程1234,你可以使用-p可省略程序文件名。
利用第二个命令行参数(即core),需要一个完整的操作系统;当你采用gdb作为关联到裸板的远程调试器使用时,可能不存在任何“进程”的概念,并且通常无法获取到coredump文件。如果无法读取或者关联coredump文件,gdb将会触发告警。
你可以选择在可执行文件后使用–args让gdb将所有参数传递给下一级。该选项将停止选项处理。
gdb –args gcc -02 -c