先内核转储文件再gdb调试

转载 2015年07月09日 23:38:11

gdb跟踪调试是linux环境下调试常用的方法,但在解决一些问题,如频繁创建线程,打印信息很多时,gdb调试会显得效率很低。这个时候,可以先生成内核转储文件,再针对生成的转储文件进行调试,从而大幅度提高调试效率。

1、生成内核转储文件


  1. # ulimit –a //查看默认的配置信息,第一项为内核转储文件大小,默认值为0  
  2. # ulimit –c unlimited // ulimit –c 可指定内核转储文件大小,unlimited表示是最大值  
  3. # ./filename //运行测试代码,直到出现段错误


2、用gdb对内核转储文件调试

运行完后,如果有段错误,就会在当前目录下生成core.pid(pid为进程号)文件

# gdb –c core.pid ./filename 或输入命令#gdb –core=core.pid./filename

//从生成的转储文件中读取断点处信息,然后自己调试,方法与gdb的相同

3、在特定目录下生成转储文件

1/proc/sys/kernel/core_uses_pid可以控制core文件的文件名中是否添加pid作为扩展。文件内容为1,表示添加pid作为扩展名,生成的core文件格式为core.xxxx;为0则表示生成的core文件同一命名为core。可通过以下命令修改此文件:

echo"1" > /proc/sys/kernel/core_uses_pid

2)/proc/sys/kernel/core_pattern可以控制core文件保存位置和文件名格式。

可通过以下命令修改此文件:

echo"/corefile/core-%e-%p-%t" > 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 thefilename 
添加导致产生core的信号
    %t - insert UNIX time that the coredump occurred intofilename 
添加core文件生成时的unix时间
    %h - insert hostname where the coredump happened intofilename 
添加主机名
    %e - insert coredumping executable name into filename 
添加命令名

相关文章推荐

用gdb配合内核转储文件瞬间定位段错误

真心很有帮助 转自浅墨的博客:http://toqianmo.sinaapp.com/        前几天在写一个使用Huffman算法的文本压缩程序时被“段错误”折磨了好长时间。因...
  • vmezr
  • vmezr
  • 2013-11-24 19:48
  • 1480

如何使用crash工具分析Linux内核崩溃转储文件

本文首先介绍了 crash 的基本概念和安装方法,其次详细介绍了如何使用 crash 工具分析内核崩溃转储文件,包括各种常用调试命令的使用方法,最后以几个实际工作中遇到的真实案例向读者展示了 cras...

如何使用crash工具分析Linux内核崩溃转储文件

本文首先介绍了 crash 的基本概念和安装方法,其次详细介绍了如何使用 crash 工具分析内核崩溃转储文件,包括各种常用调试命令的使用方法,最后以几个实际工作中遇到的真实案例向读者展示了 cras...

使用段错误产生的核心转储文件进行调试

Segmentation fault occur when a program attempts to access memory not allowed. This is often caused ...

Ubuntu的内核转储工具

ubuntu 官方连接:https://help.ubuntu.com/lts/serverguide/kernel-crash-dump.html 在我的上一篇博文《Linux内核的Oops》的最...

Ubuntu 内核转储工具

在我的上一篇博文《Linux 内核的Oops》的最后介绍到一个Linux内核转储工具Kdump,这个工具可以在发生kernel panic时把现场dump到一个文件里,以供后续分析之用。本文主要介...

获取进程的内核转储

使用命令ulimit可以查看内核转储功能是否开启: $ ulimit -c 0 -c选项表示内核转储文件的大小限制。0表示内核转储无效。 可以使用下面的命令开启: $ ulimit -c unlimi...
  • cnxxrj
  • cnxxrj
  • 2013-11-21 19:40
  • 1662

使用 Eclipse Memory Analyzer 进行堆转储文件分析

简介: Eclipse Memory Analyzer(MAT)是著名的跨平台集成开发环境 Eclipse Galileo 版本的 33 个组成项目中之一,它是一个功能丰富的 JAVA 堆转储文件分析...

使用 Eclipse Memory Analyzer 进行堆转储文件分析

Eclipse Memory Analyzer(MAT)是著名的跨平台集成开发环境 Eclipse Galileo 版本的 33 个组成项目中之一,它是一个功能丰富的 JAVA 堆转储文件分析工具,可...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)