`
chinese.darren
  • 浏览: 99565 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Linux 下core文件分析

    博客分类:
  • JVM
阅读更多
原文:http://blog.csdn.net/gobitan/article/details/5644151

Linux平台下的core file分析

胡家辉 2010-05-06



第一步:找到core file是由哪个程序产生的

[root@app10 dennis]# file core.11751

core.11751: ELF 64-bit LSB core file AMD x86-64, version 1 (SYSV), SVR4-style, from 'java'

[root@app10 dennis]#

从上面可以看出,该core file是由java产生的。



第二步:用gdb调试器找到问题所在,执行如下命令

[root@app10 dennis]# gdb java core.11751

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 "x86_64-redhat-linux-gnu"...

(no debugging symbols found)

Reading symbols from /lib64/libpthread.so.0...(no debugging symbols found)...done.

Loaded symbols for /lib64/libpthread.so.0

Reading symbols from /usr/java/jre1.6.0_19/lib/amd64/jli/libjli.so...(no debugging symbols found)...done.

Loaded symbols for /usr/java/jre1.6.0_19/bin/../lib/amd64/jli/libjli.so

Reading symbols from /lib64/libdl.so.2...(no debugging symbols found)...done.

Loaded symbols for /lib64/libdl.so.2

Reading symbols from /lib64/libc.so.6...(no debugging symbols found)...done.

Loaded symbols for /lib64/libc.so.6

Reading symbols from /lib64/ld-linux-x86-64.so.2...

(no debugging symbols found)...done.

Loaded symbols for /lib64/ld-linux-x86-64.so.2

Reading symbols from /usr/java/jre1.6.0_19/lib/amd64/server/libjvm.so...(no debugging symbols found)...done.

Loaded symbols for /usr/java/jre1.6.0_19/lib/amd64/server/libjvm.so

Reading symbols from /lib64/libm.so.6...(no debugging symbols found)...done.

Loaded symbols for /lib64/libm.so.6

Reading symbols from /lib64/librt.so.1...(no debugging symbols found)...done.

Loaded symbols for /lib64/librt.so.1

Reading symbols from /usr/java/jre1.6.0_19/lib/amd64/libverify.so...

(no debugging symbols found)...done.

Loaded symbols for /usr/java/jre1.6.0_19/lib/amd64/libverify.so

Reading symbols from /usr/java/jre1.6.0_19/lib/amd64/libjava.so...(no debugging symbols found)...done.

Loaded symbols for /usr/java/jre1.6.0_19/lib/amd64/libjava.so

Reading symbols from /lib64/libnsl.so.1...(no debugging symbols found)...done.

Loaded symbols for /lib64/libnsl.so.1

Reading symbols from /usr/java/jre1.6.0_19/lib/amd64/native_threads/libhpi.so...(no debugging symbols found)...done.

Loaded symbols for /usr/java/jre1.6.0_19/lib/amd64/native_threads/libhpi.so

Reading symbols from /lib64/libnss_files.so.2...

(no debugging symbols found)...done.

Loaded symbols for /lib64/libnss_files.so.2

Reading symbols from /usr/java/jre1.6.0_19/lib/amd64/libzip.so...(no debugging symbols found)...done.

Loaded symbols for /usr/java/jre1.6.0_19/lib/amd64/libzip.so

Reading symbols from /usr/java/jre1.6.0_19/lib/amd64/libnet.so...(no debugging symbols found)...done.

Loaded symbols for /usr/java/jre1.6.0_19/lib/amd64/libnet.so

Reading symbols from /usr/java/jre1.6.0_19/lib/amd64/librmi.so...(no debugging symbols found)...done.

Loaded symbols for /usr/java/jre1.6.0_19/lib/amd64/librmi.so

Reading symbols from /usr/java/jre1.6.0_19/lib/amd64/libnio.so...

(no debugging symbols found)...done.

Loaded symbols for /usr/java/jre1.6.0_19/lib/amd64/libnio.so

Reading symbols from /opt/nawg/lib/libheadercodecJNI.so...(no debugging symbols found)...done.

Loaded symbols for /opt/nawg/lib/libheadercodecJNI.so

Reading symbols from /opt/nawg/lib/libwpss_wsl.so.1...done.

Loaded symbols for /opt/nawg/lib/libwpss_wsl.so.1

Reading symbols from /opt/nawg/lib/libwpss_hc.so.2...done.

Loaded symbols for /opt/nawg/lib/libwpss_hc.so.2

Reading symbols from /opt/nawg/lib/libwss_wenc.so...done.

Loaded symbols for /opt/nawg/lib/libwss_wenc.so

Reading symbols from /usr/java/jre1.6.0_19/lib/amd64/libawt.so...done.

Loaded symbols for /usr/java/jre1.6.0_19/lib/amd64/libawt.so

Reading symbols from /usr/java/jre1.6.0_19/lib/amd64/headless/libmawt.so...done.

Loaded symbols for /usr/java/jre1.6.0_19/lib/amd64/headless/libmawt.so

Reading symbols from /opt/nawg/lib/libWIAwmlsencoder.so...done.

Loaded symbols for /opt/nawg/lib/libWIAwmlsencoder.so

Reading symbols from /opt/nawg/lib/libWIAhtml2xhtml.so...done.

Loaded symbols for /opt/nawg/lib/libWIAhtml2xhtml.so

Reading symbols from /opt/nawg/lib/libcapcodecJNI.so...done.

Loaded symbols for /opt/nawg/lib/libcapcodecJNI.so

Reading symbols from /opt/nawg/lib/libwpss.so.4...done.

Loaded symbols for /opt/nawg/lib/libwpss.so.4

Reading symbols from /opt/nawg/lib/libserverJNI.so...done.

Loaded symbols for /opt/nawg/lib/libserverJNI.so

Reading symbols from /opt/nawg/lib/libwpss_crypto.so.1...done.

Loaded symbols for /opt/nawg/lib/libwpss_crypto.so.1

Reading symbols from /opt/nawg/lib/libcrypto.so.0.9.8...done.

Loaded symbols for /opt/nawg/lib/libcrypto.so.0.9.8

Reading symbols from /usr/lib/oracle/10.2.0.2/client/lib/libocijdbc10.so...done.

Loaded symbols for /usr/lib/oracle/10.2.0.2/client/lib/libocijdbc10.so

Reading symbols from /usr/lib/oracle/10.2.0.2/client/lib/libclntsh.so.10.1...done.

Loaded symbols for /usr/lib/oracle/10.2.0.2/client/lib/libclntsh.so.10.1

Reading symbols from /usr/lib/oracle/10.2.0.2/client/lib/libnnz10.so...done.

Loaded symbols for /usr/lib/oracle/10.2.0.2/client/lib/libnnz10.so

Reading symbols from /usr/lib/oracle/10.2.0.2/client/lib/libociicus.so...done.

Loaded symbols for /usr/lib/oracle/10.2.0.2/client/lib/libociicus.so



Core was generated by `java -server -DWAPHOME=/opt/nawg/log/wps_var -DsystemRoot=/opt/nawg -DsystemBin'.

Program terminated with signal 6, Aborted.

[New process 12593]

[New process 22363]

【中间省略掉了】

[New process 11752]

[New process 11751]

#0  0x00002b08894f4215 in raise () from /lib64/libc.so.6



然后执行bt命令

(gdb)bt

#0  0x00002b08894f4215 in raise () from /lib64/libc.so.6

#1  0x00002b08894f5cc0 in abort () from /lib64/libc.so.6

#2  0x00002b0889df13d7 in os::abort () from /usr/java/jre1.6.0_19/lib/amd64/server/libjvm.so

#3  0x00002b0889f2a50d in VMError::report_and_die () from /usr/java/jre1.6.0_19/lib/amd64/server/libjvm.so

#4  0x00002b0889df74c1 in JVM_handle_linux_signal () from /usr/java/jre1.6.0_19/lib/amd64/server/libjvm.so

#5  0x00002b0889df3cfe in signalHandler () from /usr/java/jre1.6.0_19/lib/amd64/server/libjvm.so

#6  <signal handler called>

#7  0x00002aaaec5dd0bd in declex (yylval=<value optimized out>, DecParam=0x572dd840) at lex_dec.c:7997

#8  0x00002aaaec5e15c5 in decparse (DecParam=0x572dd840) at yacc_dec.c:1008

#9  0x00002aaaec5d4ff1 in HC_DecodeHeader (Context=0x564b62f0, WspHeader=<value optimized out>, WspHeaderLength=4096,

    ContentLength=0, HttpHeader=0x5636a390 "B$¨ÉB$: /r/n", HttpHeaderLength=0x43caa814) at hc_decoder.c:2517

#10 0x00002aaaec3b2dbe in Java_com_nokia_wap_filter_headercodec_HeaderCodec_cDecode ()

   from /opt/nawg/lib/libheadercodecJNI.so

#11 0x00002aaaab866058 in ?? ()

#12 0x0000000043caa8b0 in ?? ()

#13 0x0000000000000000 in ?? ()

(gdb)



从上面bt命令获取到的堆栈信息来看,可以清晰地看到问题所在的源代码的行数,即:

hc_decoder.c:2517



这样就便于分析和定位问题。
分享到:
评论

相关推荐

    linux coredump分析方法实例介绍

    首先,我们使用 arm-fsl-linux-gnueabi-gdb 命令来分析 Core Dump 文件: ``` arm-fsl-linux-gnueabi-gdb -c core-tsk_mvm_Main-2533-11 ``` 然后,我们将 rootfs/opt/ftl/apl/ 目录中的 PROC_MMP 文件拷贝到 Core...

    coredump文件的生成与解析.docx

    在嵌入式 Linux 操作系统中执行该文件,然后在执行程序的当前目录下将生成一个 core 文件。 三、coredump 文件的生成 在嵌入式 Linux 操作系统中执行编译生成的文件时,如果程序崩溃了,系统将生成一个 coredump ...

    Linux下core文件调试方法.doc

    默认情况下,Linux系统可能配置为不生成core文件,但可以在用户的`.bash_profile`或系统的`/etc/profile`中修改设置。 3. **设置core文件的目录与命名规则** Linux内核提供了两个系统级的配置参数: - `/proc/sys...

    Linux下core文件调试方法.pdf

    下面我们将详细探讨Linux下core文件的生成、配置和使用方法。 1. **core文件简介** 当一个程序由于某种原因(如段错误、除零错误等)崩溃时,系统默认可能会生成一个core文件。这个文件包含了程序崩溃时的内存快照...

    浅析Linux中的core文件及调试方法

    在Linux中,当进程收到这些信号时,如果系统允许生成core文件,且core文件大小未被限制为0,内核就会将进程的内存状态保存到一个名为"core"的文件中,位于进程的工作目录下。 生成core文件并不是POSIX标准的一部分...

    Linux下发生段错误时如何产生core文件

    Linux下的C程序常常会因为内存访问错误等原因造成segment fault(段错误),此时如果系统core dump功能是打开的,那么将会有内存映像转储到硬盘上来,之后可以用gdb对core文件进行分析,还原系统发生段错误时刻的堆栈...

    Linux下core文件的使用方法详解

    通常在 Linux 下遇到程序异常退出或者中止,我们都会使用 core 文件进行分析,其中包含了程序运行时的内存,寄存器,堆栈指针等信息,格式为 ELF ,可以理解是程序工作当前状态转储成一个文件,通过工具分析这个文件...

    浅析Linux下core文件.doc

    对于内存异常及崩溃有很好丰分析作用!可以更好改善程序!

    Linux下数据库PostgreSQL分析与应用.pdf

    《Linux下数据库PostgreSQL分析与应用》这篇文档主要探讨了在Linux操作系统中使用PostgreSQL数据库的各个方面,包括其特性、体系结构、用户管理和可扩展性,并介绍了数据库应用开发接口及编译方法。PostgreSQL是一种...

    Linux Debugging: coredump 分析的材料

    `coredump`是Linux系统在程序异常崩溃时生成的一种文件,它包含了程序崩溃时刻的内存映像,用于后期分析错误原因。本文将深入探讨如何利用`coredump`进行问题排查。 标题提到的"Linux Debugging: coredump 分析的...

    linux core dump

    Linux Core Dump 是 Linux 系统中的一种错误处理机制,当进程崩溃或发生错误时,操作系统会将进程的内存 dump 到一个文件中,以便于后续的调试和错误分析。本节将详细介绍 Linux Core Dump 的配置和调试方法。 一、...

    javacore文件及heapdump文件分析

    javacore 文件及 heapdump 文件分析 javacore 文件和 heapdump 文件是 Java 应用程序在遇到致命问题时产生的两个文件,这两个文件可以帮助我们分析和解决 Java 应用程序中的问题。 javacore 文件是一个文本文件,...

    linux下C++和Qt生成和调试Core文件(3)

    Core文件的作用是帮助程序员分析程序崩溃的原因,进行程序调试。 当程序崩溃时,Core文件中存储了进程的堆栈、寄存器、内存等信息。程序员可以使用调试工具如GDB来分析Core文件,以确定程序崩溃的原因。通过分析...

    Linux Debugging: coredump 分析入门的材料

    `coredump`是Linux系统中一种非常有用的故障排查工具,它记录了进程崩溃时的内存快照,可以帮助开发者分析程序错误的原因。本篇文章将围绕`coredump`分析进行入门讲解,结合实例深入探讨如何利用`coredump`来解决...

    linux core 收集和分析

    详细的介绍了如何收集linux的coredump,以及如何分析core文件。有图文说明,英文文档。

    Linux-USBCore.rar_linux usbcore_linux 设备_linux 驱动

    而www.pudn.com.txt可能是一个链接或者说明文件,可能指向更多关于USBCore和Linux驱动开发的相关资源。 了解USBCore和如何在Linux中编写USB驱动对于系统管理员和开发者来说至关重要,这能帮助他们更好地理解和调试...

    Linux下如何使用gdb调试core文件

    在Linux环境中,gdb(GNU Debugger)是一款...记住,理解core文件的生成、控制和解析是成为一名熟练的Linux开发者的关键技能之一。在实际工作中,结合日志信息、代码审查以及单元测试,可以更高效地定位和解决问题。

    coredump文件调试

    Core Dump 文件的产生是由于进程收到某个信号的时候,Linux 上现在大概有 60 多个信号,可以使用 kill -l 命令全部列出来。常见的信号包括 SIGSEGV、SIGILL、SIGFPE、SIGBUS 等。这些信号通常是由于数组越界、空指针...

Global site tag (gtag.js) - Google Analytics