- 浏览: 411557 次
文章分类
- 全部博客 (327)
- Android (114)
- Java (13)
- Java基础 (14)
- Glib (2)
- linux (15)
- extjs (5)
- eclipse (2)
- Asterisk (56)
- MYSQL (6)
- 数据库 (9)
- PHP (7)
- C# (18)
- 杂谈~~ (1)
- web开发前端 (3)
- 网络编程 (2)
- Opensips (2)
- voip (3)
- debian (7)
- openfire (15)
- wordpress (1)
- 版本控制 (1)
- Android 线程服务广播 (1)
- SRTP (2)
- 单片机及ARM等 (3)
- 基础知识 (5)
- asp.net (2)
- 单片机 (1)
- 设计模式及架构 (1)
- 安全 (1)
- Cubieboard 草莓树莓各类派 Android开发板 (1)
- J2EE (2)
- BootStrap (3)
- BootStrap web前端开发 (1)
- web前端开发 (4)
- object-c (1)
- openwrt (8)
- 智能家居 (4)
- Node.js (4)
最新评论
-
xiaoxiecomeon:
你这个程序一存在线程的时间片相互抢占的问题,运行时间长了很可能 ...
Runnable 和 Thread -
dotjar:
我觉得话应该这么说:引用TestThread tt = new ...
Runnable 和 Thread -
dagf113225:
调用TelephonyManager的隐藏API是先参考Fra ...
Android提高第十四篇之探秘TelephonyManager
在红帽企业版Linux上默认是不产生core文件。这个限制是在/etc/profile里面设置的:
ulimit -S -c 0 > /dev/null 2>1
有几种方法可以让系统产生core文件。第一个方法是修改/etc/profile里面的ulimit命令,如下:
ulimit -S -c unlimited > /dev/null 2>1
上面的设置允许系统上的所有用户产生没有文件大小限制的core文件。
如果只需要对部分用户或组开放产生core文件的权限,需要编辑/etc/security/limits.conf文件。例如,所有在"devel"组里面的用户可以产生core文件:
#<domain> <type> <item> <value>
@devel soft core <value>
<value>是core文件的最大块大小。 在/etc/security/limits.conf文件里面有配置参数的详细说明。提示,如果想通过limits.conf里面的设置来控制用户是否 可以产生core文件,需要把/etc/profile里面的ulimits设置注释掉:
# No core files by default
# ulimit -S -c 0 > /dev/null 2>1
如果应用是通过daemon命令来启动的,编辑/etc/init.d/functions,注释掉ulimit的设置或改变这行:
ulimit -S -c 0 >/dev/null 2>1
通过上面的设置,应用程序应该可以产生core文件。如果不能产生core文件,请检查您的应用程序是否拥有正确的uid,在程序执行的时候是否有 使用setuid改变程序的uid。 在红帽企业Linux 3上面, 可以通过下面的命令允许使用setuid的应用程序产生core文件:
echo 1 > /proc/sys/kernel/core_setuid_ok
另外,您也可以在应用程序中添加下面的代码来实现:
prctl(PR_SET_DUMPABLE, 1);
默认情况下,core文件会创建在应用程序的工作目录下。如果您想指定core文件存放的目录,您可以执行以下命令(用您要保存的路径替换/tmp):
echo "/tmp" > /proc/sys/kernel/core_pattern
例子:
#include <stdio.h> int main() { char *ptr="linuxers.cn"; *ptr=0; }
编译运行后结果如下:
[leconte@localhost test]$ gcc -g -o test a.c [leconte@localhost test]$ ./test
段错误
此时并没有产生core文件,接下来使用ulimit -c设置core文件大小为无限制,再执行./test程序,结果如下:
[leconte@localhost ~]$ ulimit -a core file size (blocks, -c) 0 [leconte@localhost test]$ ulimit -c unlimited [leconte@localhost test]$ ulimit -a core file size (blocks, -c) unlimited [leconte@localhost test]$ ./test 段错误 (core dumped) [leconte@localhost test]$ ls -al core.* -rw------- 1 leconte leconte 139264 01-06 22:31 core.2065 可见core文件已经生成,接下来可以用gdb分析,查看堆栈情况: [leconte@localhost test]$ gdb ./test core.2065 GNU gdb Fedora (6.8-27.el5) Copyright (C) 2008 Free Software Foundation, Inc. License GPLv3+: 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 "i386-redhat-linux-gnu"... warning: exec file is newer than core file. warning: Can't read pathname for load map: Input/output error. Reading symbols from /lib/libc.so.6...done. Loaded symbols for /lib/libc.so.6 Reading symbols from /lib/ld-linux.so.2...done. Loaded symbols for /lib/ld-linux.so.2 Core was generated by `./test'. Program terminated with signal 11, Segmentation fault. [New process 2065] #0 0x0804836f in main () at a.c:6 6 *ptr=0;
从上述输出可以清楚的看到,段错误出现在a.c的第6行,问题已经清晰地定位到了。
很多系统默认的core文件大小都是0,我们可以通过在shell的启动脚本/etc/bashrc或者~/.bashrc等地方来加入 ulimit -c 命令来指定core文件大小,从而确保core文件能够生成。
除此之外,还可以在/proc/sys/kernel/core_pattern里设置core文件的文件名模板,详情请看core的官方man手册
发表评论
-
使用事件驱动模型实现高效稳定的网络服务器程序
2015-11-17 10:22 611前言 事件驱动为广大的程序员所熟悉,其最为人津津乐道的是在 ... -
试验UDP打洞穿透NAT
2015-09-25 16:05 1904目标 路由穿透,实现广域网P2P通讯。 4种典型NAT类 ... -
initrd的作用
2015-09-11 16:43 847initrd 是一个 ram disk 的 image. 一 ... -
Linux 初始 RAM 磁盘(initrd)概述
2015-09-11 16:32 786Linux 初始 RAM 磁盘(initrd)概述 ... -
正则表达式 linux shell 删除偶数奇数行 取得最后一个字符 s/\(^.*$\)\n^.*$/\1/g
2013-08-28 09:54 1700删除偶数行:%s/\(^.*$\)\n^.*$/\1/g删除 ... -
CentOS yum安装sun Java jre jdk和openjdk
2013-07-14 16:33 916在Linux下的tty终端下, ... -
Linux Server Configuration (不错)
2013-06-28 09:03 606http://www.calculate-linux.or ... -
查看centos中的用户和用户组
2012-12-15 12:12 799查看centos中的用户和用户组 ... -
VIM中常用的查找、替换、删除模式总结
2012-12-03 22:53 965删除以某个字节开始的同一行: s/^#.*\n$//g ... -
服务器数据备份(shell 定时脚本备份mysql)
2012-12-02 21:48 873Mysql备份策略大概可分为4种: 1) 直接拷贝数据 ... -
查找Centos Linux服务器上的WebShell后门
2012-03-12 20:43 1787务器被挂马或被黑的朋友应该知道,黑客入侵web服务器的第一目标 ... -
IPTABLE减轻DDOS的设定
2012-03-05 20:06 827# Make sure NEW tcp connecti ... -
linux下IPTABLES配置详解
2012-03-04 19:14 915linux下IPTABLES配置详解 http:/ ... -
Shell Scripts基础
2012-03-04 15:53 12781. 什麼是 Shell Scrip ...
相关推荐
### Linux下产生Core Dump文件及使用GDB调试详解 #### 一、Core文件的基本概念与作用 当一个程序因为某些原因而崩溃时,系统内核会自动创建一个名为`core`的文件,这个文件包含了程序崩溃时刻的内存映像以及其他...
- Windows可以通过注册表设置来全局启用Coredump,或者在程序启动时通过API调用来控制。 - 使用`SetErrorMode`函数可以改变进程的错误处理模式,使其在遇到未处理异常时生成Coredump。 3. **C++代码实现** - 在...
该问题产生了一个 Core Dump 文件,我们将通过 GDB 调试器来分析该文件。 首先,我们使用 arm-fsl-linux-gnueabi-gdb 命令来分析 Core Dump 文件: ``` arm-fsl-linux-gnueabi-gdb -c core-tsk_mvm_Main-2533-11 `...
其中`<corefile>`是core dump文件的路径,`<executable>`是导致core dump的程序的可执行文件路径。 - **查看调用堆栈**:在`gdb`环境中,可以通过`where`或`bt`命令查看崩溃时的调用堆栈: ```sh (gdb) where `...
2. 使用`jmap -dump:format=b,file=heapdump.hprof <pid>`命令生成`heapdump`文件,其中`<pid>`是Websphere应用服务器进程ID。 3. 运行`ha`工具,指定`heapdump.hprof`文件作为输入。 4. 分析`ha`工具生成的报告,...
- 修改 core dump 文件的生成路径:`echo '/home/wangtian/coredump_file/%t-%e-%p-%c.core' > /proc/sys/kernel/core_pattern` 2. **永久更改**:编辑 `/etc/sysctl.conf` 文件,将更改写入配置文件中。 - 打开...
- /data/corefile/core-wpa_supplicant-1352:崩溃时的内存映像。 开发者需要根据Coredump文件和崩溃日志的信息,回溯程序执行的路径,找到引发崩溃的根源。 最后,GDB的使用需要一定的学习和练习。针对GDB的命令...
echo "/tmp/corefile-%e-%p-%t" > /proc/sys/kernel/core_pattern ``` 这里 `%e` 表示可执行文件的名字,`%p` 是进程 ID,`%t` 是时间戳。 3. **使用 PID 作为文件名的一部分**:通过修改 `/proc/sys/kernel/...
可以通过以下命令修改此文件:`echo "/corefile/core-%e-%p-%t" > core_pattern`,将 Core 文件统一生成到 `/corefile` 目录下,产生的文件名为 `core-命令名-pid-时间戳`。其中 `%p` 代表进程 id,`%u` 代表当前 ...
何时产生core dump? 当进程接收到某些信号(如SIGSEGV)时,如果内核被配置为允许生成core dump,那么它就会创建一个包含进程内存映像的文件。除了SIGSEGV外,其他信号也可能触发core dump的生成,例如: - ...
【核心 dump 文件(Core Dump File)详解】 在 IT 领域,当一个程序异常终止时,操作系统可能会生成一种特殊类型的文件,称为“核心 dump”或“core dump”文件。这个文件记录了程序崩溃时内存中的状态,包括进程的...
`/proc/sys/kernel/core_pattern`可以用来设置core文件的保存路径和命名规则,例如`echo "/corefile/core-%e-%p-%t" > core_pattern`会让core文件保存到`/corefile`目录下,并以`core-命令名-pid-时间戳`的形式命名...
1. **运行JCA工具**:通常使用命令行运行,如`java -jar jca457.jar [javacore_file] [heap_dump_file]`。 2. **输入参数**:提供javacore和heap dump的文件路径。 3. **生成报告**:工具会生成详细的分析报告,包括...
如果core_pattern的首字符是管道符'|',则内核将coredump的内容发送给对应的程序处理,而不是写入文件。 4. 使用chdir函数的影响:如果程序在执行过程中使用了chdir函数更改了工作目录,core文件可能会被保存在新的...
首先,确保core dump文件和导致其生成的可执行文件在同一目录下,或者知道core dump文件的完整路径。然后,可以使用GDB的`file`命令加载可执行文件,`core`命令加载core dump文件,如`gdb program_name core`。加载...
要生成Core Dump文件,需要在程序崩溃后执行`ulimit –c unlimited`命令,设置Core Dump文件的大小。同时,需要在编译程序时添加`-g`选项,并把优化选项等级设为最低(-O0,默认为-O2)。 通过GDB和Core Dump文件,...
在IT领域,尤其是在Java应用程序的性能调优过程中,生成javacore和heapdump文件是非常重要的步骤。这些文件能帮助我们诊断应用程序的内存泄漏、性能瓶颈等问题。本篇将详细讲解如何利用wsadmin工具来生成这两种文件...
例如,设置模式为/corefile/core-%e-%p-%t,将使得Core Dump文件按照程序名(%e)、进程ID(%p)和UNIX时间戳(%t)命名。 Core Dump的使用示例 当需要分析Core Dump文件时,可以使用gdb等调试工具。例如,gdb --...
例如,使用 `echo "/corefile/core-%e-%p-%t" > core_pattern` 命令可以将生成的 Core 文件保存到 /corefile 目录下,并将文件名设置为 core-命令名-pid-时间戳。 4. 使用 Core 文件 可以使用 GDB 调试器来调试 ...
然而,我们可以自定义coredump文件的生成位置和命名规则,例如通过修改`/proc/sys/kernel/core_pattern`中的设置,比如`echo “/home/corefile/core-%e-%p-%t” > /proc/sys/kernel/core_pattern`。这里的`%e`代表可...