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("%d\n", i + 11);

	return 0;
}


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

	printf("main: %d\n", 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:


以上!


  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值