Core dump

 

实验平台:

 

[root@myhost core]# uname -a

Linux myhost 2.6.18-128.el5 #1 SMP Wed Jan 21 10:44:23 EST 2009 i686 i686 i386 GNU/Linux

 

core文件一般生成格式为core.pid

其中,pid为产生core文件的进程ID

 

1. 查看当前core文件大小限制 ulimit -c

[root@myhost core]# ulimit -c

0

Linuxcore文件大小默认是0,即不产生core文件

 

2. 设置core文件大小限制 ulimit -c size

单位是KB

[root@myhost core]# ulimit -c 1024

[root@myhost core]# ulimit -c

1024

 

若生成core文件大小超过设置的core文件大小限制,则超过部分将会被裁剪。 若设

ulimit -c unlimited,则core文件大小无限制.

 

3.编写产生core文件程序

 

#include<stdio.h>

#include<unistd.h>

 

static void test(void);

 

int main(void)

{

   printf("process ID: %d/n", getpid());

   test();

   return 0;

}

static void test(void)

{

   int a=10/0;

   printf("%d/n", a);

}

 

4./生成core文件

 

[root@myhost core]# gcc -g core.c -o core

core.c: In function ‘test’:

core.c:14: warning: division by zero

[root@myhost core]# ./core

process ID: 15729

Floating point exception (core dumped)

[root@myhost core]# ls

core  core.15729  core.c

 

5. 调试core文件

[root@myhost core]# gdb ./core

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"...

(gdb) core-file core.15729

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 `./core'.

Program terminated with signal 8, Arithmetic exception.

[New process 15729]

#0  0x08048404 in test () at core.c:14

14         int a=10/0;

(gdb)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android的coredump是指系统或应用程序由于某些错误而崩溃时,生成的一种二进制文件,包含了崩溃时的内存状态和寄存器信息等调试信息。这个文件可以帮助开发人员定位和解决崩溃问题。 在Android中,生成coredump的方式有多种,其中最常用的是通过adb命令行工具获取。具体步骤如下: 1. 连接Android设备到电脑,并打开调试模式。 2. 在电脑上打开命令行工具,输入以下命令: ``` adb shell ``` 3. 进入设备的shell环境后,输入以下命令: ``` su ``` 4. 获取正在运行的应用程序的PID号,例如: ``` ps | grep com.example.app ``` 5. 使用gdbserver启动应用程序,并将coredump写入指定文件中,例如: ``` gdbserver :5039 --attach <PID> --core <filename> ``` 其中,`:5039`是gdbserver监听的端口号,`<PID>`是应用程序的进程ID,`<filename>`是coredump文件的保存路径和文件名。 6. 在另一个终端窗口中,打开gdb调试工具,连接到gdbserver,并加载coredump文件,例如: ``` arm-linux-androideabi-gdb <path-to-binary> -ex "target remote :5039" -ex "core-file <filename>" ``` 其中,`<path-to-binary>`是应用程序的可执行文件路径,`<filename>`是coredump文件的路径和文件名。 7. 在gdb调试界面中,可以使用各种命令分析coredump文件的信息,例如查看寄存器状态、打印堆栈信息等。 需要注意的是,获取coredump文件需要root权限,而且对于系统级的crash,可能需要特殊的配置和调试工具才能捕获到完整的信息。此外,coredump文件可能会包含敏感信息,需要注意保密。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值