core dumped问题查找以及使用gdb、QT下gdbserver使用

一,什么是coredump

我们经常听到大家说到程序core掉了,需要定位解决,这里说的大部分是指对应程序由于各种异常或者bug导致在运行过程中异常退出或者中止,并且在满足一定条件下(这里为什么说需要满足一定的条件呢?下面会分析)会产生一个叫做core的文件。

通常情况下,core文件会包含了程序运行时的内存,寄存器状态,堆栈指针,内存管理信息还有各种函数调用堆栈信息等,我们可以理解为是程序工作当前状态存储生成第一个文件,许多的程序出错的时候都会产生一个core文件,通过工具分析这个文件,我们可以定位到程序异常退出的时候对应的堆栈调用等信息,找出问题所在并进行及时解决。

二,coredump文件的存储位置

core文件默认的存储位置与对应的可执行程序在同一目录下,文件名是core,大家可以通过下面的命令看到core文件的存在位置:

cat  /proc/sys/kernel/core_pattern

缺省值是core

三,coredump文件的生成

1、指定core dumped文件的生成路径

控制台输入命令:

/sbin/sysctl -w kernel.core_pattern=/home/james/workspace/bin/core_%t_%e_%p

%t - insert UNIX time that the coredump occurred into filename添加core文件生成时的unix时间

%e - insert coredumping executable name into filename添加类名

%p - insert pid into filename 添加pid(进程ID)

2、设定core dumped文件大小为不限制

控制台输入命令:

gedit ~/.bashrc

在该文件末尾加上:

ulimit -c unlimited

3.当程序意外退出时,查看core dumped文件

控制台输入命令:

gdb execute core_(dump file)

可以用tab键补全

回车键

where

查看导致推出的线程最后条用的函数栈。

四、QT及gdbServer的使用(本文是在PC完成)

目标机:(端口自定义)

gdbServer 192.168.1.119:1234  ./execute

宿主机:

QtCreator->调试(DeBug)->开始调试(Start Debugging)->关联到远程调试服务器(Attach to Remote Debug Server....)  进入到Start Debugger界面,

在服务器端口(Server Port)输入端口1234  

在Override srever address输入IP:192.168.1.119

在本地执行当(Local executable)选择可执行文件:execute

点击OK即可进行调试。

时间: 2024-11-07 16:57:38

core dumped问题查找以及使用gdb、QT下gdbserver使用的相关文章

再谈Segmentation fault (core dumped)问题 -查找段错误原因

再谈Segmentation fault (core dumped)问题 -查找段错误原因    在前一篇文章"Segmentation fault (core dumped) "有说了具体core dumped产生的原因. 下面主要来介绍下问题的解决与查找,在linux下一般都使用gdb进行调试,那今天我就以Ubuntu 14.04环境作为介绍 来查找正在的core dumped的原因.需要说明的是,你在编译程序的时候要加调试选项 -g. $ gcc -o app reverse.c

Core Dumped

转自:http://blog.csdn.net/dlutxie/article/details/8868883 有的程序可以通过编译,但在运行时会出现Segment fault(段错误).这通常都是指针错误引起的.但这不像编译错误一样会提示到文件一行,而是没有任何信息.一种办法是用gdb的step, 一步一步寻找.但要step一个上万行的代码让人难以想象. 我们还有更好的办法,这就是core file. 如果想让系统在信号中断造成的错误时产生core文件, 我们需要在shell中按如下设置: #

什么是 core dump ? 以及 core dumped 的调试

什么是core dump? (down = 当) core的意思是:内存,dump的意思是:扔出来.堆出来. 开发和使用Unix程序时,有时程序莫名其妙的down掉了,却没有任何的提示(有时候会提示core dumped). 这时候可以查看一下有没有形如:core 的文件生成,这个文件便是操作系统把程序down掉时的内存的内容扔出来生成的,它可以做为调试程序的参考. core dump又叫核心转储,当程序运行过程中发生异常,程序异常退出时,由操作系统把程序当前的内存状况存储在一个core文件中,

Linux程序Segmentation fault (core dumped)

1 问题原因 Segmentation fault (core dumped)多为内存不当操作造成.空指针.野指针的读写操作,数组越界访问,破坏常量等.对每个指针声明后进行初始化为NULL是避免这个问题的好办法.排除此问题的最好办法则是调试. 更为详细的原因: (1)内存访问越界 a) 由于使用错误的下标,导致数组访问越界b) 搜索字符串时,依靠字符串结束符来判断字符串是否结束,但是字符串没有正常的使用结束符c) 使用strcpy, strcat, sprintf, strcmp, strcas

ros rviz: Segmentation fault (core dumped) 与 [rviz -1] process has died [pid 10134, exit code -6]

1. 执行roslaunch 文件打开 某rviz文件.出现了例如以下的错误: [rviz-1] process has died [pid 10134, exit code -6] 2. 执行rosrun rviz rviz  正常,执行某公布图像的节点, 当用rviz加入 这一图像topic时,出现了例如以下的错误: Segmentation fault (core dumped) 我的问题出自解决问题QTerro:Size mismatch for type 'QPaintBufferCa

解决程序出现“terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc Aborted (core dumped)”的问题

最近跑程序时出现了这么一个问题: terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc Aborted (core dumped) 出现此问题一般都是数据量太大,同时跑太多程序造成的,比如我经常会同时打开十多个终端界面,跑不同的脚本,就容易出现这种问题.解决方法很简单,不要同时跑这么多程序,一个个跑. 解决程序出现"terminate called after throwing

Python 运行时出现 Segmentation fault (core dumped) 解决办法

在VSCode添加某插件后,Debug出现Segmentation fault (core dumped) 解决方案,在当前environment下运行: conda update --all 原文地址:https://www.cnblogs.com/xbit/p/10075777.html

2647673 - HANA Installation Failure with signal 11 core dumped

Symptom HANA 2.0 SPS03 installation using hdblcmgui failed due to the below error message. [Error] /usr/sap/HDD/HDB00/exe/hdbnsutil call failedProgram /usr/sap/HDD/HDB00/exe/hdbnsutil terminated with error: signal 11 core dumpedInstallation of SAP HA

Yum 安装任何包都提示段错误 (core dumped)

[[email protected] ~]# yum -y update Loaded plugins: fastestmirror, refresh-packagekit Determining fastest mirrors * base: mirror.esocc.com * extras: mirror.esocc.com * soluslabs: mirror.us1.soluslabs.net * updates: mirror.esocc.com base base/primary