gdb调试器基本使用方法(入门)程序如果已经宕掉如何调试

本文介绍了Linux下强大的文本界面调试工具gdb,包括使用bt查看函数调用栈,list命令查看源代码,设置断点(b+行号或函数名),运行程序(run),打印和设置内存变量,以及如何处理已宕机程序的调试,特别是利用Core Dump文件进行调试的方法,如调整ulimit设置以生成Core Dump,并通过gdb加载Core Dump进行分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、gdb调试器
linux下的gdb调试器,是一款GNU组织开发并发布的UNIX/Linux下的程序调试工具,他没有图形化的友好界面,但功能强大。
bt查看函数调用的栈空间
这里写图片描述
(1)list 查看指定位置的源代码,后可以跟行号

(gdb) l 1
1       #include<iostream>
2       #include<stdio.h>
3       using namespace std;
4       void Test()
5       {
6              printf("Test function");
7
8       }
9       int main(int argc,char * argv[])
10      {

(2)后面可以跟函数名显示函数定义

(gdb) l Test
1       #include<iostream>
2       #include<stdio.h>
3       using namespace std;
4       void Test()
5       {
6              printf("Test function");
7
8       }
9       int main(int argc,char * argv[])
10      {

(3)设置断点 b+行号
指定位置设置断点

(gdb) break 10
Breakpoint 1 at 0x4008c1: file main.cpp, line 10.

(4)设置断点b+函数名

(gdb) b Test
Breakpoint 4 at 0x4008a1: file main.cpp, line 6.`

(5)运行程序 run

(gdb) run

(6)gdb打印和设置内存变量
打印print
(gdb) print i
$1 = 101

设置set
(gdb) set i=99
Ambiguous set command “i=99”: .
(gdb) set var i
warning: Expression is not an assignment (and might have no effect)
(gdb) set var i=99
第一次set i=99出现二义性,因为程序不知道是要设置cpp中的i还是我们设置的i
所以set var i=99,设置成普通变量
(7)程序如果已经宕掉如何调试
Core又称为Core Dump文件,生成内存镜像文件
通过Core Dump文件进行调试
如何生成Core Dump文件
用到两个指令:

root@ubuntu:/code/src/testgdb# ulimit -c
0

像这样等于0说明无法生成Core Dump文件
解决方法 加上n(数值)

ulimit -c n 单位kb

ulimit -c unlimited 不限制大小的Core Dump文件

成功生成Core Dump文件怎么查看。可以通过下面的指令
gdb main core
直接查看Dump文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值