gdb获取调用栈的两种方式

方式一

在程序运行中出现异常,可以通过gdb以运行的方式调试程序,这里列出一个,

1、首先启动gdb

2、进入gdb执行页面后,输入file ./执行程序名称,这个命令将会将程序加载到内容中

3、输入r命令,运行程序

4、若程序崩溃,则输入bt命令查看调用栈

方式二

1、开启coredump开关,若没有打开coredump,首先要打开coredump开关命令,查询命令如下

consys@consys-Lenovo-Legion-Y7000:~$ ulimit -c

unlimited---这表示coredum开关已打开,并且coredump文件大小无限制

2、查看coredump文件的生成路径,通过如下的命令可以看到coredump文件生成的路径和名称

consys@consys-Lenovo-Legion-Y7000:~$ cat /proc/sys/kernel/core_pattern

/tmp/core-%p-%e-%t

其中%p的含义代表的是进程ID

%e的含义是应用程序名称(exexute)

%t的含义应该是时间

修改coredump文件的生成路径和格式,命令如下:

echo '/yourdir/core.%e-%p-%s' > /proc/sys/kernel/core_pattern

还有其它的一些格式,自己查询即可。

3、进入到coredump文件生成目录,然后执行如下命令

gdb /home/xxx/xxx/可执行程序名称 coredump文件名称

执行上面的命令后,输入bt命令,即可查看到崩溃时的调用栈。

相关推荐
code monkey.28 分钟前
【寻找Linux的奥秘】第一章:基础指令
linux·运维·服务器
qziovv28 分钟前
Ubuntu通过局域网共享文件夹实现文件夹的连接
linux·运维·ubuntu
海鸥8134 分钟前
在 k8s中查看最大 CPU 和内存的极限
linux·容器·kubernetes
森焱森36 分钟前
AArch64架构及其编译器
linux·c语言·单片机·架构
Lin桐1 小时前
②Modbus TCP转Modbus RTU/ASCII网关同步采集无需编程高速轻松组网
linux·网络协议·tcp/ip·网络安全·缓存·信息与通信·信号处理
罗技1231 小时前
Easysearch 使用 AWS S3 进行快照备份与还原:完整指南及常见错误排查
linux·云计算·aws·es·easysearch
孙同学_2 小时前
【Linux篇】调试器-gdb/cgdb使用
linux·运维·服务器
irisMoon062 小时前
mac本地代理nginx,解决跨域问题
linux·nginx·macos
汤姆和杰瑞在瑞士吃糯米粑粑2 小时前
【Linux学习篇】--开发工具第一期
linux·运维·学习
菜鸟康2 小时前
Linux系统编程--线程同步
linux