GDB调试选项
GDB在启动时,可以选择不同的模式。本文对于 GDB 的启动时的参数选项做出了一些说明,我们可以根据自己的需求选择 GDB 的启动模式。
-nx / -n:不执行任何初始化文件里的命令。通常在处理所有的命令此选项和参数之后,GDB 会执行这些文件里的命令。
-quite / -silent / -q:“安静模式”,不打印介绍和版权信息。在批处理模式下也不打印。
-batch:以批处理模式运行。处理完所有命令文件后以 0 状态推出。批处理模式将在 GDB 作为过滤器运的时候很有用,例如下载和运行一个远程计算机上的程序。
-symbols <file> / -s <file>:从指定的文件中读取符号表。
-se <file>:从指定文件中读取符号表信息,并把它用在可执行文件中。
-core <file> / -c <file>:调试 core dump 的 core 文件, core dump 叫做核心转储,它是进程运行时在突然崩溃的那一刻的一个内存快照,操作系统在程序发生异常而异常在进程内部又没有被捕获的情况下,会把进程此刻内存、寄存器状态、运行堆栈等信息转储保存在一个文件里。
-directory <directory> / -d <directory>:加入一个源文件的搜索路径。默认搜索路径是环境变量中的 PATH 所定义的路径。
-tty device / -t device:将设备作为程序的标准输入输出。
-tui:在启动时激活文本用户接口。文本用户接口在终端上管理多种文本窗口,用来显示代码,汇编,寄存器和 GDB 命令的输出。
-write:以可读可写的方式打开可执行程序和 core 文件,和 set write on 命令相同。
-statistics:在每次完成命令和回收到提示符的时候,此选项可让 GDB 打印时间和内存使用统计信息。
-version:此选项可让 GDB 打印版本号和非保障性的声明然后退出。
GDB 在启动阶段的活动
- 启动命令行解释器。
- 读入在 home 目录下的初始化文件,如果文件存在,会执行文件里面的所有的命令。
- 处理命令行参数和选项。
- 读入和执行在当前目录下的初始化文件里面的命令,只有在当前目录和 home 路径不同时才会执行。
- 读入命令文件,适用 -X 选项指定的文件。
- 对如记录在历史文件里的命令历史。
解析:GDB 初始化文件通常是‘.gdbinit’。由于 DOS 文件系统的文件名的限制,GDB DJGPP使用‘gdb.ini’这个名字。
启动项的模式选择
GDB 启动的时候可以有很多模式的选择,类似与一些功能开关。与 GCC 编译器的参数功能类似,例如,GCC 的-g
选项,如果在编译的时候使用了这个选项,我们就可以使用 GDB 调试,反之则不能;GCC 的-O
选项,如果不指明优化的等级,就不会产生相应的优化效果。-nx / -n:不执行任何初始化文件里的命令。通常在处理所有的命令此选项和参数之后,GDB 会执行这些文件里的命令。
-quite / -silent / -q:“安静模式”,不打印介绍和版权信息。在批处理模式下也不打印。
-batch:以批处理模式运行。处理完所有命令文件后以 0 状态推出。批处理模式将在 GDB 作为过滤器运的时候很有用,例如下载和运行一个远程计算机上的程序。
-symbols <file> / -s <file>:从指定的文件中读取符号表。
-se <file>:从指定文件中读取符号表信息,并把它用在可执行文件中。
-core <file> / -c <file>:调试 core dump 的 core 文件, core dump 叫做核心转储,它是进程运行时在突然崩溃的那一刻的一个内存快照,操作系统在程序发生异常而异常在进程内部又没有被捕获的情况下,会把进程此刻内存、寄存器状态、运行堆栈等信息转储保存在一个文件里。
-directory <directory> / -d <directory>:加入一个源文件的搜索路径。默认搜索路径是环境变量中的 PATH 所定义的路径。
-tty device / -t device:将设备作为程序的标准输入输出。
-tui:在启动时激活文本用户接口。文本用户接口在终端上管理多种文本窗口,用来显示代码,汇编,寄存器和 GDB 命令的输出。
-write:以可读可写的方式打开可执行程序和 core 文件,和 set write on 命令相同。
-statistics:在每次完成命令和回收到提示符的时候,此选项可让 GDB 打印时间和内存使用统计信息。
-version:此选项可让 GDB 打印版本号和非保障性的声明然后退出。
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算