#导入Word文档图片# Linux下GDB调试工具的运用
Posted DS小龙哥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#导入Word文档图片# Linux下GDB调试工具的运用相关的知识,希望对你有一定的参考价值。
一、GCC编译器的常用选项
使用GCC编译器的时候,我们必须给出一系列必要的调用参数和文件名称。GCC编译器的调用参数大约有100多个,这里只介绍其中最基本、最常用的参数。
GCC最基本的用法∶ gcc [参数] [文件名称]
- 常用的参数如下-c 只编译:不链接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件,通常用于编译不包含主程序的子程序文件。
-o output_filename:确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out。
-g:产生符号调试工具(GNU的gdb)所必要的符号信息,要想对源代码进行调试,我们就必须加入这个选项。
-O:对程序进行优化编译、链接,采用这个选项,整个源代码会在编译、链接过程中进行优化处理,这样产生的可执行文件的执行效率可以提高,但是,编译、链接的速度就相应地要慢一些。
-O2:比-O更好的优化编译、链接,当然整个编译、链接过程会更慢。
-E:仅执行编译预处理;
-S:将C代码转换为汇编代码;
示例:
# gcc test.c -o app |
- 编译时指定库与头文件路径
-L:指定动态库路径。示例:gcc test.c -o app -L/usr/lib
-I:指定头文件存放的路径。示例:gcc test.c -o app -I/usr/include
-l: 指定库名称。示例:示例:gcc test.c -o app -lpthread
二、GDB调试工具
我们通常写C程序,会使用命令gcc test.c -o test,对源文件进行编译,但是如果我们要对程序进行调试,就必须在编译源文件时,使用-g参数,编译时使用的命令为:gcc -g test.c -o test
GDB工具也支持自动补全,比如: list命令可以简写l ,run命令可以简写r
2.1 GDB工具的基本使用
- 编译支持GDB调试的程序:
[root@wbyq test]# gcc -g test.c -o test |
- 启用GDB调试:
[root@wbyq test]# gdb a.out |
a.out 表示是要调试的可执行文件名称。
- 进入调试界面的效果:
- 直接运行程序
- 退出调试界面(quit命令)
2.2 GDB工具常用的命令
注意没有输入新命令,敲回车GDB会再次执行上一条命令
查看gdb使用帮助
2.2.2 设置程序断点执行(breakpoints)
使用breakpoints (可简写为b)命令给程序添加断点,共有下面几种情况:
b <函数名> 在某函数入口处添加断点; b <行号> 在指定行添加断点 b <文件名:行号> 在指定文件的指定行添加断点 b <行号 if 条件> 当条件为真时,指定行号处断点生效,例 b 5 if i=10 ,当i=10时,第5行断点生效 |
2.2.3 查看程序已经设置的断点(info break)
添加完断点之后,我们可以使用【info break】命令,查看所有的断点;
2.2.4 单步\\连续支持程序
设置断点之后执行run命令开始运行程序;
输入next命令可实现单步运行
输入continue命令可实现连续运行;
如果想查看某一变量的值,则使用print/p + 变量名;
- 注意事项:
- 执行run命令之前,必须设置断点,否则执行run之后程序就直接运行到结尾了。
- 执行单步运行、连续运行、打印指定变量值这些命令时,程序必须是运行状态(执行run之后)。
以上是关于#导入Word文档图片# Linux下GDB调试工具的运用的主要内容,如果未能解决你的问题,请参考以下文章