linux下使用GDB调试C/C++总结(图文教程) - Go语言中文社区

linux下使用GDB调试C/C++总结(图文教程)


一般来说,GDB主要帮助你完成下面三个方面的功能:

1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。
2、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式
3、当程序被停住时,可以检查此时你的程序中所发生的事。

要想生成可以调试的可执行文件,需要在编译的时候加上-g选项,不用在链接的时候加,例如:
gcc -g -c main.cc
gcc -o main main.o
这样两个命令下来之后,就会生成可以调试的main可执行文件。
gdb调试命令表:
命令 解释 简写
file 加载一个可执行文件,也可以在运行gdb的时候加载,两种方法都不会运行程序。例如:gdb ./main
list 列出可执行源码的一部分,通常在程序开始运行前执行,用来设置断点 l
next 单步调试,不进入函数 n
step 单步调试,进入函数 s
run 运行加载了的程序 r
continue 继续执行程序 c
quit 退出调试 q
print 输出制定的变量的值,变量要在程序运行处可见 p
break 设置断点 b
info break 查看断点的信息 i b
delete 删除断点 d
watch 监视一个变量的值,一旦值发生变化,程序将会被暂停执行 wa
help 查看gdb的帮助信息 h


使用举例:

源代码:

#include <stdio.h>

int print() {
	int i = 100;
	printf("%dn", i + 11);

	return 0;
}


int main() {
	int a;
	print();
	a = 110 + 1;

	printf("main: %dn", a + 111);

	return 0;
}
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">运行gdb,我在运行的时候加载了可执行文件./main。可已在运行的时使用file ./main来达到同样的效果。</span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">加载成功之后会在最下面显示:Reading symbols from 可执行文件名,,.done</span>

然后用list 命令列出源码的一部分:


使用break命令设置断点:


run这个调试程序:


使用watch监视一个变量:


被监视的变量一发生变化就会停止程序:


使用step进入函数:


使用info break命令查看断点信息,还可以看一个断电是否被执行过了:


使用print命令查看一个变量的值,等号右边才是这个变量的值:


使用delete删除断点, d 断点编号,编号可以使用info break命令来查看,上面找到的断点的编号为1:


输入continue继续运行程序,如果有断点则在断点处停止,没有则直接执行完毕,退出成可执行程序,注意不是退出gdb:


以上!


版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/SKY453589103/article/details/47292697
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-07 15:03:48
  • 阅读 ( 1238 )
  • 分类:数据库

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢