linux环境下程序崩溃段错误之core文件查看

在Linux中,core文件是程序崩溃时产生的一个特殊文件,它包含了程序崩溃时的内存内容。要查看core文件,你需要使用一个调试器,如gdb

以下是查看core文件的步骤:

1.使用ulimit命令设置允许core文件生成。运行ulimit -c可以查看core文件的大小限制,如果是0,则不会生成core文件,可以使用"ulimit -c 单位数量"设置最大的 core 文件的大小, 以 blocks 为单位,也可以使用ulimit -c unlimited来设置core文件可以无限大。

ulimit -c unlimited

2.运行程序。如果程序崩溃,则会生成core文件。通常,core文件命名为core.pid,其中pid是导致生成core文件的进程ID。

3.使用gdb调试器查看core文件。假设你的程序名为your_program,则可以使用以下命令:

gdb your_program core.pid

gdb中,你可以使用各种命令来查看崩溃时的调用栈、变量值等信息,例如:

  • bt 或 backtrace:查看调用栈。
  • info locals:查看当前函数中的局部变量。
  • info registers:查看寄存器的值。
  • up 或 down:在调用栈帧之间移动。

使用模板

$ ulimit -c unlimited  # 设置core文件大小无限制
$ ./your_program        # 运行你的程序,导致崩溃并生成core文件
$ gdb your_program core.12345  # 假设进程ID是12345
(gdb) bt                        # 查看调用栈信息
(gdb) up                        # 查看上一层函数的信息
(gdb) info locals              # 查看局部变量
(gdb) quit                      # 退出gdb

使用示例

[root@localhost run]# gdb trade_demo_real core.245441
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-114.el7
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /root/yhzq_atp_trade_real/demo/simple_demo/run/trade_demo_real...(no debugging symbols found)...done.
[New LWP 245449]
[New LWP 245441]
[New LWP 245444]
[New LWP 245443]
[New LWP 245445]
[New LWP 245447]
[New LWP 245448]
[New LWP 245446]
[New LWP 245442]
Dwarf Error: wrong version in compilation unit header (is 5, should be 2, 3, or 4) [in module /lib64/libstdc++.so.6]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `./trade_demo_real'.
Program terminated with signal 11, Segmentation fault.
#0  0x00007fac310f33fd in std::string::assign(std::string const&) () from /lib64/libstdc++.so.6
Missing separate debuginfos, use: debuginfo-install glibc-2.17-260.el7.x86_64 libgcc-4.8.5-36.el7.x86_64
(gdb) bt
#0  0x00007fac310f33fd in std::string::assign(std::string const&) () from /lib64/libstdc++.so.6
#1  0x000000000040cc89 in query_position() ()
#2  0x000000000040d1a5 in query_all() ()
#3  0x000000000040f6bc in Strategy() ()
#4  0x0000000000423d39 in void std::_Bind_simple<void (*())()>::_M_invoke<>(std::_Index_tuple<>) ()
#5  0x0000000000423c93 in std::_Bind_simple<void (*())()>::operator()() ()
#6  0x0000000000423c2c in std::thread::_Impl<std::_Bind_simple<void (*())()> >::_M_run() ()
#7  0x00007fac310db68e in execute_native_thread_routine_compat () from /lib64/libstdc++.so.6
#8  0x00007fac30308dd5 in start_thread () from /lib64/libpthread.so.0
#9  0x00007fac30822ead in clone () from /lib64/libc.so.6
(gdb) info locals
No symbol table info available.
(gdb) up
#1  0x000000000040cc89 in query_position() ()
(gdb) bt
#0  0x00007fac310f33fd in std::string::assign(std::string const&) () from /lib64/libstdc++.so.6
#1  0x000000000040cc89 in query_position() ()
#2  0x000000000040d1a5 in query_all() ()
#3  0x000000000040f6bc in Strategy() ()
#4  0x0000000000423d39 in void std::_Bind_simple<void (*())()>::_M_invoke<>(std::_Index_tuple<>) ()
#5  0x0000000000423c93 in std::_Bind_simple<void (*())()>::operator()() ()
#6  0x0000000000423c2c in std::thread::_Impl<std::_Bind_simple<void (*())()> >::_M_run() ()
#7  0x00007fac310db68e in execute_native_thread_routine_compat () from /lib64/libstdc++.so.6
#8  0x00007fac30308dd5 in start_thread () from /lib64/libpthread.so.0
#9  0x00007fac30822ead in clone () from /lib64/libc.so.6
(gdb) up
#2  0x000000000040d1a5 in query_all() ()
(gdb) next
The program is not being run.
(gdb) info locals
No symbol table info available.
(gdb) down
#1  0x000000000040cc89 in query_position() ()
(gdb) down
#0  0x00007fac310f33fd in std::string::assign(std::string const&) () from /lib64/libstdc++.so.6
(gdb) down
Bottom (innermost) frame selected; you cannot go down.
(gdb) up
#1  0x000000000040cc89 in query_position() ()
(gdb) quit
[root@localhost run]#

在上面例子中,通过bt查看调用栈信息,#0可以看到产生错误的原因,#1可以知道在函数query_position() 内部发生了内存错误,#2可以知道query_position() 的调用是在query_all()函数内部调用的,因此接下来只需要在query_position()函数内部进行排查分析即可。


end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/598745.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

IDEA中git的常用操作(保姆级教学)

IDEA中git的常用操作&#xff08;保姆级教学&#xff09; 以下是git的工作原理&#xff0c;觉得繁琐的可以跳过不看 Workspace&#xff1a;工作区 (平时存放代码的地方) Index / Stage&#xff1a;暂存区&#xff08;用于临时存放存放你的改动&#xff0c;事实上就是一个文件&…

电脑实时监控软件分享|好用实时屏幕监控软件有哪些?

在当今数字化工作环境和远程办公日益普及的背景下&#xff0c;电脑实时监控软件成为了企业管理、教育监控、家庭监护等多个领域的必备工具。这些软件不仅能够帮助管理者实时了解员工的工作状态&#xff0c;确保工作效率&#xff0c;还能有效防止数据泄露&#xff0c;保护企业或…

现场面试题

这里写目录标题 1.sql1.1 只保留学生的最新成绩1.2 统计通话号码数1.3 更新地址 2.基础题2.1 请求序列第N位的值: 0, 1, 1, 2, ,3, 5, 8, 13, 21, 34.....第N位的值2.2 请写一段java代码&#xff0c;输出存在重复字母的单词 1.sql 1.1 只保留学生的最新成绩 表student中记录学…

Vue-组件中的data

一个组件的data选项必须是一个函数。保证每个组件实例&#xff0c;维护独立的一份数据对象。如下图&#xff1a; 组件一旦封装好了&#xff0c;可以使用多次&#xff0c;比如数字框组件使用了三次&#xff1a; 每次创建新的组件实例&#xff0c;都会重新执行一次data函数&#…

leetcode-字符串的排列-100

题目要求 思路 1.因为只涉及到字符&#xff0c;因此可以进行排序 2.创建临时字符串&#xff0c;当临时字符串temp的长度等于str的长度&#xff0c;作为判出条件。 3.创建一个标记的数组&#xff0c;每次在temp中插入一个字符&#xff0c;便在对应的数组下标设置为1&#xff0c…

【PDF技巧】PDF限制编辑密码忘记了,如何编辑文件?

PDF文件打开之后&#xff0c;发现编辑功能都是灰色的&#xff0c;无法使用&#xff0c;无法编辑PDF文件&#xff0c;遇到这种情况&#xff0c;是因为PDF文件设置了限制编辑导致的。一般情况下&#xff0c;我们只需要输入PDF密码&#xff0c;将限制编辑取消就可以正常编辑文件了…

【ARM Cortex-M3指南】8:中断行为

文章目录 八、中断行为8.1 中断/异常流程8.1.1 压栈8.1.2 取向量8.1.3 寄存器更新 8.2 异常退出8.3 嵌套中断8.4 末尾连锁中断8.5 延迟到达8.6 进一步了解异常返回值8.7 中断等待8.8 中断相关的错误8.8.1 压栈8.8.2 出栈8.8.3 取向量8.8.4 非法返回 八、中断行为 8.1 中断/异常…

GPU术语

可向量化循环 可向量化循环通常是指在编程中&#xff0c;能够被转换为向量操作或矩阵运算的循环结构。 在传统编程中&#xff0c;对于数组或向量中的每个元素执行相同的操作时&#xff0c;开发者可能会使用for循环逐一进行处理。然而&#xff0c;许多现代编程语言和库提供了向…

从哪些方面可以看出现货黄金价格走势?

现货黄金价格的走势受到多种因素的影响&#xff0c;我们可以从宏观经济环境、货币政策、供需关系、市场情绪和技术分析几个主要方面来观察和分析这一贵金属的价格动态。现货黄金作为全球投资市场中的避险资产&#xff0c;其价格波动往往能体现出复杂的经济和政治变化。 宏观经济…

(论文阅读-优化器)Orca: A Modular Query Optimizer Architecture for Big Data

目录 摘要 一、简介 二、背景知识 2.1 大规模并行处理 2.2 SQL on Hadoop 三、Orca架构 四、查询优化 4.1 优化工作流 4.2 并行查询优化 五、Metadata Exchange 六、可行性 6.1 Minimal Repros 6.2 优化器准确性测试 七、实验 八、相关工作 8.1 查询优化基础 8…

Python专题:二、Python小游戏,体验Python的魅力

希望先通过一个小的游戏让大家先对Python感兴趣&#xff0c;兴趣是最好的老师。 小游戏的运行结果&#xff1a; 1、在sublime编辑器里面写如下代码&#xff1a; import randomnum random.randint(1, 100) # 获得一个随机数 is_done False # 是否猜中的标记 count 0 # 玩…

视频号小店怎么做?品从哪里来?如何推广售卖?一文详解

大家好&#xff0c;我是电商笨笨熊 视频号小店作为一个刚推出不久的项目&#xff0c;可谓是站在风口&#xff0c;遍地红利&#xff0c;也正是我们进入的最佳时机。 但是面对一个新的项目&#xff0c;自是存在着多种疑问&#xff0c;尤其是对于一些从未踏足电商市场的新手玩家…

SpringBoot+Vue+Element-UI实现医患档案管理系统

目录 前言介绍 系统展示 管理员页面 患者管理 诊疗信息管理 病历信息管理 处方信息管理 患者页面 医生页面 部分核心代码 病历信息 上传文件 数据库配置 前言介绍 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技…

美易官方:英伟达业绩将难以撑起股价?

美股市场似乎总是对各大公司的业绩表现抱有极大的期待&#xff0c;就像一个永远填不饱的“巨胃”。在这样的市场环境下&#xff0c;即使是业绩骄人的公司也可能难以支撑其股价。英伟达&#xff0c;这家在图形处理单元&#xff08;GPU&#xff09;领域享有盛誉的公司&#xff0c…

翻译《The Old New Thing》 - Double-clicking radio buttons

Double-clicking radio buttons - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20050804-10/?p34713 Raymond Chen 在 2005年08月04日 让对话框单选按钮支持双击确定 提示 本文提供了一种让对话框窗口上的控件支持双击确定窗口返回的方法 …

HG-KN73J-S100 三菱伺服电机(750W型)

HG-KN73J-S100属于三菱MR-JE系列伺服系统&#xff0c;可以与伺服驱动器MR-JE-70A、MR-JE-70B、MR-JE-70C配套使用。HG-KN73J-S100完全替换HF-KN73J-S100。HG-KN73J-S100规格、HG-KN73J-S100参数。 HG-KN73J-S100参数说明&#xff1a;MR-JE低惯性/小容量、0.75Kw三菱伺服电机HG-…

【问题解决】关于linux环境下在使用onvif进行网络摄像头扫描发现时soap_send___wsdd__Probe返回-1

【问题背景】 在使用MTK+OPENWRT的方案进行开发时,有一个新需求是需要将检测网络摄像头信息,在使用onvif进行摄像头检测时,发现函数soap_send___wsdd__Probe总是返回-1,导致失败。 但是在编译服务器上使用gcc编译链而不使用交叉编译链时,运行正常,并且可以检测到网络摄像…

Leetcode—933. 最近的请求次数【简单】

2024每日刷题&#xff08;128&#xff09; Leetcode—933. 最近的请求次数 实现代码 class RecentCounter { public:RecentCounter() {}int ping(int t) {q.push(t);while(t - 3000 > q.front()) {q.pop();}return q.size();} private:queue<int> q; };/*** Your Re…

揭秘 IEEE/ACM Trans/CCF/SCI,谁才是科研界的王者?

会议之眼 快讯 在学术探索的浩瀚星海中&#xff0c;每一篇论文都像是一颗璀璨的星辰&#xff0c;而那些被顶级期刊或会议收录的论文&#xff0c;则无疑是最耀眼的几颗。 在众多评价标准中&#xff0c;IEEE/ACM Transactions、CCF推荐期刊和会议、SCI分区期刊&#xff0c;它们…

一、vue3专栏项目 -- 1、项目介绍以及准备工作

这是vue3TS的项目&#xff0c;是一个类似知乎的网站&#xff0c;可以展示专栏和文章的详情&#xff0c;可以登录、注册用户&#xff0c;可以创建、删除、修改文章&#xff0c;可以上传图片等等。 这个项目全部采用Composition API 编写&#xff0c;并且使用了TypeScript&#…
最新文章