Coredump及调试
1、查看是否打开了coredump
lybxin@Inspiron:~/MyRes/miscellany/test/01_coredump$ulimit -c #这里可以看到ulimit限制coredump的产生0lybxin@Inspiron:~/MyRes/miscellany/test/01_coredump$ulimit -c unlimited #取消限制lybxin@Inspiron:~/MyRes/miscellany/test/01_coredump$ulimit -cunlimited
2、coredump默认存储在与程序相同的目录里
3、core文件的命名规则
/proc/sys/kernel/core_uses_pid 1 表示使用procid命名,0表示不使用
/proc/sys/kernel/core_pattern 可以设置格式化的 core 文件保存位置或文件名
echo “/opt/corefile/core-%e-%p-%t” > /proc/sys/kernel/core_pattern
将会控制所产生的 core 文件会存放到 /corefile 目录下,产生的文件名为 core- 命令名 -pid- 时间戳
以下是参数列表 :
%p - insert pid into filename 添加 pid
%u - insert current uid into filename 添加当前 uid
%g - insert current gid into filename 添加当前 gid
%s - insert signal that caused the coredump into the filename 添加导致产生 core 的信号
%t - insert UNIX time that the coredump occurred into filename 添加 core 文件生成时的 unix 时间
%h - insert hostname where the coredump happened into filename 添加主机名
%e - insert coredumping executable name into filename 添加命令名
4、core_pattern内核解析函数
format_corename
5、Coredump调试
除了下面方法外,也可以在打开gdb后使用core-file core-xxx命令来吧core-xxx文件加载进去
lybxin@Inspiron:~/MyRes/miscellany/test/04_gdbtest$gdb -core=coreGNU gdb (Ubuntu7.11.1-0ubuntu1~16.04)7.11.1Copyright(C)2016FreeSoftwareFoundation,Inc.LicenseGPLv3+: 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-linux-gnu".Type"show configuration"for configuration details.For bug reporting instructions, please see:<http://www.gnu.org/software/gdb/bugs/>.Find the GDB manual and other documentation resources online at:<http://www.gnu.org/software/gdb/documentation/>.For help, type "help".Type"apropos word" to search for commands related to "word".[New LWP 6093]Core was generated by `./testgdb.out'.Program terminated with signal SIGSEGV, Segmentation fault.#0 0x00000000004005f4 in ?? ()(gdb) bt#0 0x00000000004005f4 in ?? ()#1 0x000000000000000a in ?? ()#2 0x0000000000000140 in ?? ()#3 0x00007fff5297f7d0 in ?? ()#4 0x0000000000000145 in ?? ()#5 0x00007fff5297f6d0 in ?? ()#6 0x000000000040065e in ?? ()#7 0x00000000004007ac in ?? ()#8 0x000000647ce2a7fa in ?? ()#9 0x0000000000000000 in ?? ()(gdb) file all.outwarning: core file may not match specified executable file.Reading symbols from all.out...done.(gdb) bt#0 0x00000000004005f4 in test1 (p=320)at /home/lybxin/MyRes/miscellany/test/04_gdbtest/testgdb.c:18#1 0x000000000040065e in test2 (offset=100)at /home/lybxin/MyRes/miscellany/test/04_gdbtest/testgdb.c:30#2 0x00000000004006c3 in main (argc=1, argv=0x7fff5297f7d8)at /home/lybxin/MyRes/miscellany/test/04_gdbtest/testgdb.c:46(gdb)
Coredump及调试的更多相关文章
- 【Coredump】调试之旅
测试反馈,core了. 拿到环境,发现6和11,一个是重复释放,一个是非法指针. 用GDB一挂 ,发现 1 GNU gdb (GDB) 7.5 2 Copyright (C) 2012 Free So ...
- gdb 调试coredump文件过程
gdb 调试coredump文件过程: 第一步:首先需要一个进程的coredump文件,怎么搞出coredump文件呢? 1. ps -fax|grep 进程名称 找到 ...
- gdb调试coredump文件
linux上程序崩溃起来挺烦人,不过linux 比较好的是有gdb. 1.生成coredump文件 echo "ulimit -c unlimited" >> /etc ...
- gdb 调试coredump文件过程:
第一步:首先需要一个进程的coredump文件,怎么搞出coredump文件呢? 1. ps -fax|grep 进程名称 找到进程的pid 2.gdb -p pid ...
- 40.Linux应用调试-使用gdb和gdbserver
1.gdb和gdbserver调试原理 通过linux虚拟机里的gdb,来向开发板里的gdbserver发送命令,比如设置断点,运行setp等,然后开发板上的gdbserver收到命令后,便会执行应用 ...
- 基于solarflare的openonload技术以TCPDirect方法加速epoll
[前言]基于solarflare的onload模式加速,官方文档给出TCPDirect模式可以实现从300ns到30ns的延迟缩减.我们需要测试在我们的交易模型框架中他的延时,有人给出了tcpdire ...
- 转:linux coredump调试
1 )如何生成 coredump 文件 ? 登陆 LINUX 服务器,任意位置键入 echo "ulimit -c 1024" >> /etc/profile 退出 L ...
- 快速学习C语言二: 编译自动化, 静态分析, 单元测试,coredump调试,性能剖析
上次的Hello world算是入门了,现在学习一些相关工具的使用 编译自动化 写好程序,首先要编译,就用gcc就好了,基本用法如下 gcc helloworld.c -o helloworld.o ...
- coredump调试的使用
一,什么是coredump 跑程序的时候经常碰到SIGNAL 或者 call trace的问题,需要定位解决,这里说的大部分是指对应程序由于各种异常或者bug导致在运行过程中异常退出或者中止,并且在满 ...
随机推荐
- 剑指Offer-二维数组查找
题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. ...
- HTML 5 audio标签
audio标签的介绍 定义: <audio> 标签定义声音,比如音乐或其他音频流. <audio></audio>是HTML5中的新标签 能够在浏览器中播放音频, ...
- python基础 - 字符串与列表的基本操作方法
# v = 11# data = v.bit_length()# print(data) # a = 'ABCDEFGHIJK'# print(a[0])# print(a[10]) # print( ...
- django使用pycharm为项目选择虚拟环境-3.1
使用pycharm打开项目 选择右上角的 file - settings - project - project interpreter 选择左上的设置符号,选择 Add 选择红框部分,然后选择之前创 ...
- 前端css之float浮动
浮动的准则,先找前一个块标签,在确认有否清除浮动的条件或者是距离的情况下,如果这一行能摆得下,就继续紧贴前一个标签 如果摆不下,就会另起一行 浮动只有左边和右边 如果是块标签,设置浮动,先把displ ...
- 20145234黄斐《Java程序设计》第十周学习总结
教材学习内容总结 网络概述 概述 网络编程技术是当前一种主流的编程技术,随着联网趋势的逐步增强以及网络应用程序的大量出现,所以在实际的开发中网络编程技术获得了大量的使用. 计算机网络概述 IP地址: ...
- element-ui 分页注意事项
<template> <div id="monitor"> 一页显示 {{currentCount}}条 当前第 {{currentPage}}页 < ...
- VDI数据恢复
环境:cirtix xendesktop 问题:VDI无法正常启动,后台登录查看报错.多次重启无效果,客户部分数据存放在启动盘. 解决方法:1.创建一台新的VDI(必须保证关机)2.将原有VDI启动盘 ...
- spark 执行架构
术语定义 Application:Spark Application的概念和Hadoop MapReduce中的类似,指的是用户编写的Spark应用程序,包含了一个Driver 功能的代码和分布在集群 ...
- dva webpack 利用require.context加载多个model
dva redux数据管理都在models,根据业务不同models可能会有几十甚至上百的 [模块.js], 每次在index.js使用 app.model(require('./models/exa ...