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命令,即可查看到崩溃时的调用栈。

相关推荐
小兔薯了20 小时前
11. Linux firewall 防火墙管理
linux·运维·服务器
Linux技术芯20 小时前
浅谈SCSI寻址机制与工作阶段深度解析?
linux
☼←安于亥时→❦1 天前
Linux 系统日志‘/var/log/syslog‘ 和 ‘/var/log/messages‘ 详解
linux
袁气满满~_~1 天前
Ubuntu下配置PyTorch
linux·pytorch·ubuntu
倦王1 天前
Linux看ip,改用户名字加权限,在单独用户下设置miniconda
linux·服务器·tcp/ip
少废话h1 天前
Flume Kafka源与汇的topic覆盖问题解决
java·linux·kafka·flume
凤凰战士芭比Q1 天前
Docker安装与常用命令
linux·运维·docker·容器
ASKED_20191 天前
常用 Linux 命令大全(文件、网络、时间、进程、数据库、工具全覆盖)
linux·网络·数据库
a123560mh1 天前
国产信创操作系统银河麒麟常见软件适配(MongoDB、 Redis、Nginx、Tomcat)
linux·redis·nginx·mongodb·tomcat·kylin
赖small强1 天前
【Linux驱动开发】Linux MMC子系统技术分析报告 - 第二部分:协议实现与性能优化
linux·驱动开发·mmc