如何生成core文件进行项目调试
由于项目前期的调试错误比较多,或者有某些隐藏危险:例如内存泄漏;偶尔才出现一次,如果没有捕捉错误的手段可能好不容易出现的机会就溜走了,所以生成core文件是必要的,发生段错误会生成相应的core文件,使用gdb可以查询错误原因和堆栈情况。
生成core文件
那么如何在程序发生段错误时生成core文件呢?可以写一个脚本run.sh,脚本内容如下:
#!/bin/sh
#启用核心转储功能,将核心转储大小的软限制设置为无限制。前提是文件系统没有禁用该功能
ulimit -c unlimited
#下面这两行都能设置生成core文件的名字及路径,使用任意一行即可;生成core文件的路径(/mmc_data/core)必须可写,最好chmod 777 /mmc_data/core -R
#默认是在当前目录想生成名为core的文件
#echo "/mmc_data/core/coremat" > /proc/sys/kernel/core_pattern
core_pattern="/mmc_data/core/test_core"
#执行你要运行的程序
./test
每次使用脚本run.sh运行程序,当程序发生错误时即可在/mmc_data/core/目录下生成test_core文件。
生成不同名字的core文件
有时候在系统中运行不止一个程序,为了防止不同程序产生的core文件互相覆盖就需要针对不同的程序生成不同的core文件,具体方法如下:
ulimit -c unlimited
#当然,如果你想每次出错都生成不同名字的core文件可以进行如下设置:core文件的名称将包含可执行文件名、进程 ID 和生成时间戳的信息。
#下行命令也可以实现让多个程序发生错误时生成不同名字的core文件,方便调试
sysctl -w kernel.core_pattern="/mmc_data/meta8k/core/core-%e-%p-%t"
: '
占位符介绍,可根据自己的需求使用:
%e:可执行文件的名称
%p:进程的 ID
%h:主机名
%s:信号名称
%t:时间戳
%u:用户名
%g:组名
'
./test
然后使用gdb工具分析即可:
#执行如下命令进入gdb分析
gdb test test_core
#进入之后执行bt即可看到错误位置及错误原因
bt
注意:编译test程序时必须使用-g参数,不然不能使用gdb工具,关于gdb的更多用法参考的的另一篇博客。
关闭core文件生成
如果想要关闭core文件的生成执行以下命令:
#核心转储大小的软限制设置为0
ulimit -c 0
#清空配置文件
echo "" > /proc/sys/kernel/core_pattern
#注意:如果是清空配置文件,需要再设置配置文件才能再生成core:echo "/mmc_data/core/coremat" > /proc/sys/kernel/core_pattern
想要了解更多linux及音视频信息,关注我后续更新!
如何生成core文件进行项目调试的更多相关文章
- Linux环境崩溃生成core文件以及调试
Linux环境崩环境溃生成core文件以及调试 gdb结合coredump定位崩溃进程 Linux 使用core file文件快速定位程序崩溃代码行 http://www.cnblogs.com/ha ...
- Linux生成core文件、core文件路径设置
在Linux下产生并调试core文件 先看看我用的是个什么机器: $ uname -aLinux dev 2.4.21-9.30AXsmp #1 SMP Wed May 26 23:37:09 EDT ...
- gdb强制生成core文件
如何为自己的进程产生core 文件,又不想退出这个进程? 系统只在程序崩溃退出时自动产生core file. 有的人像自己处理异常信号,然后自己产生一个core file,然后继续运行.那该怎么办呢? ...
- Linux环境下如何生成core文件
Linux环境下进程发生异常而挂掉,通常很难查找原因,但是一般Linux内核给我们提供的核心文件,记录了进程在崩溃时候的信息.但是生成core文件需要设置开关,具体步骤如下: 1.查看生成core文件 ...
- Linux下无法生成core文件的解决办法
1.检查ulimit [root ~]# ulimit -c 0 0:表示禁止生成core文件,此时需要执行ulimit -c unlimited(临时生效),或者在.bashrc中添加“ulimit ...
- 让linux中的程序崩溃时生成core文件
当我们的linux程序崩溃的时候,常常会有这样的提示: Segmentation fault (core dumped) 段错误 (核心已转储) 提示说生成了core文件,但是此功能 ...
- 使用dbghelp生成dump文件以及事后调试分析
前言 在产品的实际应用环境中,如果我们的程序在客户那里出现了问题,例如程序异常了,而这个时候的现象又不能还原或者很难还原重现,那么只有使用dump文件来保存程序的当前运行信息,例如调用堆栈等,同时使用 ...
- Linux中ulimit -c生成core文件()
理解这六个shell脚本语言的功能 echo "kernel.core_pattern = /tmp/core-%e-%p-%t" >> /etc/sysctl.con ...
- Ubuntu16.04下写的Qt程序,调试时没问题,运行时偶现崩溃 (需要在运行时生成core dump文件,QMAKE_CC += -g)
记录一下 Ubuntu16.04下写的Qt程序,调试时没问题,运行时偶现崩溃 需要在运行时生成core dump文件 首先在pro结尾里加入 QMAKE_CC += -g QMAKE_CXX += - ...
- linux 下core文件生成、路径、格式设置及调试
core文件生成及调试1 代码 #include<stdio.h> int main() { int *p = NULL; *p = 0; return 0; } 2 在当前shell执行 ...
随机推荐
- PRACK消息
概述 PRACK消息是sip协议的扩展,在RFC3262中定义,标准的名称是sip协议中的可靠临时响应. 本文简单介绍标准中对PRACK消息流程的描述,以及fs配置PRACK的方式. 环境 cento ...
- .NET周刊【9月第1期 2023-09-03】
国内文章 如何正确实现一个自定义 Exception https://www.cnblogs.com/kklldog/p/how-to-design-exception.html 最近在公司的项目中, ...
- 浅聊一下SpringMVC的核心组件以及通过源码了解其执行流程
浅聊一下SpringMVC的核心组件以及通过源码了解其执行流程 MVC作为WEB项目开发的核心环节,正如三个单词的分解那样,Controller(控制器)将View(视图.用户客户端)与Model(j ...
- 用OLED屏幕播放视频(1): 项目介绍
下面的系列文章记录了如何使用一块linux开发扳和一块OLED屏幕实现视频的播放: 项目介绍 为OLED屏幕开发I2C驱动 使用cuda编程加速视频处理 这篇文章主要对项目的实现做整体的介绍, 包括硬 ...
- Salesforce LWC学习(四十五) lwc支持Console App控制Tab了
本篇参考:https://help.salesforce.com/s/articleView?id=release-notes.rn_lwc_workspaceAPI.htm&release= ...
- WorkPress使用BackWPup插件备份后手动还原方法记录
前提 拿到BackWPup插件备份的zip包(下文均以backup.zip来指代).这个是备份包是事先从源WorkPress上备份好的. 环境 OS:Centos7.9 Apache:2.4.6 PH ...
- SK 简化流行编程语言对 生成式AI 应用开发的支持
Semantic Kernel[1] 是一个将大型语言模型(LLM)与流行的编程语言相结合的SDK. Microsoft将Semantic Kernel(简称SK)称为轻量级SDK,支持AI LLM的 ...
- C++的动态分派在HotSpot VM中的重要应用
众所周知,多态是面向对象编程语言的重要特性,它允许基类的指针或引用指向派生类的对象,而在具体访问时实现方法的动态绑定.C++ 和 Java 作为当前最为流行的两种面向对象编程语言,其内部对于多态的支持 ...
- vue上通过krpano.js实现360全景图
首先贴出一些XML对应的函数,文件内容都有注释说明, 前端代码读取xml文件代码 // 初始化 window.embedpano({ xml: 0, target: 'pano', html5: 'o ...
- PostgreSQL学习笔记-6.基础知识:ALTER、TRUNCATE 、View(视图)、TRANSACTION 事务、LOCK 锁
ALTER TABLE 命令 在 PostgreSQL 中,ALTER TABLE 命令用于添加,修改,删除一张已经存在表的列. 另外你也可以用 ALTER TABLE 命令添加和删除约束. 语法 用 ...