zoukankan      html  css  js  c++  java
  • 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即可进行调试。

  • 相关阅读:
    练习 字符串存入字典 数组的降序 倒序 字符串目录存不存在 数组中文排序
    随机 随机获得100个50-100的数字字符串,存到数组并输出
    练习 字符串10题
    把一个字符串反输出abc123.xyz789输出987zyx.321cba
    把NSString *string=@"2013 年 05 月 05 日";以2013-05-05输出
    dephi cef3获取Post数据
    Delphi下 多显示器,将窗体显示于第二个显示器
    Delphi下POS机
    SQLConnection 连接 SQLite
    cxGrid主视图取得从视图
  • 原文地址:https://www.cnblogs.com/wanzaiyimeng/p/6710291.html
Copyright © 2011-2022 走看看