
Gdb调试
注意:在Gcc编译选项中一定要加入
–g
退出GDB:quit
或
Ctrl+d
调试过程:
1
查看文件
命令:
(gdb)
l
命令:(gdb)
b
行号
注:到第17行停止,并没有执行17行
3
查看断点情况
info
b
4
运行代码
r
命令:
(gdb)
r
(也可以指定行开始运行,在r后面加上行号)
5
查看变量值
p
命令:(gdb)
p
变量名
6
设置监视点:
watch
z
(变量名)
也可以是复杂的表达式
7
单步运行
命令:(gdb)
n
(逐过程)
8逐步,会进入函数
命令:(gdb)
s
9条件断点
将正常断点转变为条件断点:condition
如:condition
1
i
==
10
只有当满足条件i
==
1时,才会在断点1处暂停
10
恢复程序运行
c
命令:
(gdb)
c
(程序就会运行,如果没有断点,就运行剩下部分,如果有断点,就会运行到下一个断点)
11
去除断点
clear
line_number
clear
filename:line_number
12
help
121
help找出类别
122help从列表中
1、这是一个gdb文件,直接打开文件基本看不出有什么内容。查看文件其实这是一个文件地理数据库,需要专门的软件查看。
2、安装arcgis系列软件,找到catalog软件。
3、点击进入catalog软件,点击文件夹关联,连接到文件所在文件夹位置。
4、在catalog里我们可以看到gdb以库的形式展现。
5、点击进入该库,可以看到有很多的图层,这就是该文件地理数据库中存放的东西。
6、点击预览,可以查看图层的可视化内容。
使用GDB
一般来说GDB主要调试的是C/C++的程序。要调试C/C++的程序,首先在编译时,我们必须要把调试信息加到可执行文件中。使用编译器(cc/gcc/g++)的 -g 参数可以做到这一点。如:
$gcc -g -Wall helloc -o hello
$g++ -g -Wall hellocpp -o hello
如果没有-g,你将看不见程序的函数名、变量名,所代替的全是运行时的内存地址。当你用-g把调试信息加入之后,并成功编译目标代码以后,让我们来看看如何用gdb来调试他。
启动GDB的方法有以下几种:
gdb <program>
program也就是你的执行文件,一般在当前目录下。
gdb <program> core
用gdb同时调试一个运行程序和core文件,core是程序非法执行后core dump后产生的文件。
gdb <program> <PID>
如果你的程序是一个服务程序,那么你可以指定这个服务程序运行时的进程ID。gdb会自动attach上去,并调试他。program应该在PATH环境变量中搜索得到。
以上三种都是进入gdb环境和加载被调试程序同时进行的。也可以先进入gdb环境,在加载被调试程序,方法如下:
在终端输入:gdb
在gdb环境中:file <program>
这两步等价于:gdb <program>
GDB启动时,可以加上一些GDB的启动开关,详细的开关可以用gdb -help查看。我在下面只例举一些比较常用的参数:
-symbols <file>
-s <file>
从指定文件中读取符号表。
-se file
从指定文件中读取符号表信息,并把他用在可执行文件中。
-core <file>
-c <file>
调试时core dump的core文件。
-directory <directory>
-d <directory>
加入一个源文件的搜索路径。默认搜索路径是环境变量中PATH所定义的路径。
以上就是关于linux入门基础(四)Gdb调试程序全部的内容,包括:linux入门基础(四)Gdb调试程序、ARCGIS中GDB文件怎么打开、怎样用GDB调试一个由脚本文件启动的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)