core dumped问题查找以及使用gdb、QT下gdbserver使用
2017-04-14 18:35
344 查看
一,什么是coredump
我们经常听到大家说到程序core掉了,需要定位解决,这里说的大部分是指对应程序由于各种异常或者bug导致在运行过程中异常退出或者中止,并且在满足一定条件下(这里为什么说需要满足一定的条件呢?下面会分析)会产生一个叫做core的文件。
通常情况下,core文件会包含了程序运行时的内存,寄存器状态,堆栈指针,内存管理信息还有各种函数调用堆栈信息等,我们可以理解为是程序工作当前状态存储生成第一个文件,许多的程序出错的时候都会产生一个core文件,通过工具分析这个文件,我们可以定位到程序异常退出的时候对应的堆栈调用等信息,找出问题所在并进行及时解决。
二,coredump文件的存储位置
core文件默认的存储位置与对应的可执行程序在同一目录下,文件名是core,大家可以通过下面的命令看到core文件的存在位置:
cat /proc/sys/kernel/core_pattern
缺省值是core
三,coredump文件的生成
1、指定core dumped文件的生成路径
控制台输入命令:
%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文件大小为不限制
控制台输入命令:
在该文件末尾加上:
3.当程序意外退出时,查看core dumped文件
控制台输入命令:
可以用tab键补全
回车键
where
查看导致推出的线程最后条用的函数栈。
四、QT及gdbServer的使用(本文是在PC完成)
目标机:(端口自定义)
宿主机:
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即可进行调试。
我们经常听到大家说到程序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即可进行调试。
相关文章推荐
- gdbserver 使用中的问题
- QT下使用MapX控件的问题以及Activex技术
- 使用JDBC连接数据库遇到的问题,以及查找到的解决方法
- 在docker容器中使用gdbserver发生的问题及解决办法
- 在win2003server上使用移动硬盘时遇到的问题以及禁用“关闭事件跟踪程序”
- open-vmdk在linux编译时候 zlib.h的头文件问题 以及在windows使用zlib的资料查找记录
- Qt5.7以及5.8在cmake工程中使用C++14编译遇到的问题及解决方案
- 关于一些core dump的问题,makefile以及gdb的使用问题
- 关于一些core dump的问题,makefile以及gdb的使用问题
- Linux下交叉编译gdb,gdbserver+gdb的使用以及通过gdb调试core文件
- linux下记一次使用gdb对死锁问题的定位以及pthread_cancel使用的建议
- $_SERVER变量 以及 PHP 使用 $_SERVER['PHP_SELF'] 获取当前页面地址及其安全性问题
- Linux下交叉编译gdb,gdbserver+gdb的使用以及通过gdb调试core文件
- 解决Qt中文乱码以及汉字编码的问题(UTF-8/GBK)——ubuntu环境设置默认是utf-8,文件编码可使用Encodersoft批量转换
- QT中使用槽函数来关闭窗口,导致内存泄露的问题以及解决办法
- QT编程中如何给按钮等控件加载图标以及QT编程中使用中文的问题
- 什么是 core dump ? 以及如何使用gdb对 core dumped 进行调试
- asp.net ajax UpdatePanel使用技巧以及常见问题
- 在WIN2003以及WIN2000 SERVER下使用pqmagic
- BizTalk Server 2006使用过程中常见的问题及其解决办法