Solaris核心转储分析(Solaris Core dump analysis)

2019-06-26 04:49发布

我用的pstack分析在Solaris中的核心转储文件

我还能如何分析从solaris的核心转储?

什么命令可以用来做呢?

其他什么信息将可从转储?

Answer 1:

您可以使用Solaris模块调试,MDB,或DBX。 MDB带有SUNWmdb(或SUNWmdb X为64位版本)封装。

核心文件是您正在运行的进程,在坠毁时的图像。

根据您的应用程序是否与调试标志或不编译,你就可以查看堆栈的图像,从而知道哪个函数造成的核心,以获得被传递给函数的参数的值,该值变量,分配的内存区...

在最近的Solaris版本,您可以配置什么核心文件将包含与coreadm命令; 例如,你可以映射的内存段进程被装。

请参阅MDB文件和dbx文档 。 在GDB快速参考卡也有帮助,一旦你知道GDB的基本知识。



Answer 2:

我想任何回答这个问题,应该用一个简单的食谱开始:

对于dbx的,配方是:

% dbx a.out core
(dbx) where
(dbx) threads
(dbx) thread t@3
(dbx) where


Answer 3:

如果核心转储是从你写的或内置的程序,然后使用哪个调试器,您通常用于调试运行的应用程序。 他们都应该能够加载的核心文件。 如果你不挑剔调试,以及你使用Solaris,我将建议dbx的。 这将有助于获得的Sun Studio的最新版本FCS补丁,否则的Sun Studio的最新版本的快车。 这也是非常有帮助的,如果你能在核心文件加载到其中创建核心文件在同一系统上调试器。 如果库中的代码是在创建核心文件时不同,然后堆栈跟踪起不了作用,当它经过库。 调试器也使用操作系统的辅助库理解的libthread和运行时链接的数据结构,因此,如果您需要加载不同的机器上的核心文件,你要确保在OS上安装助手库匹配系统数据结构操作系统。 你可以找到你永远想知道的这是几年前写的白纸这些系统库的一切。

http://developers.sun.com/solaris/articles/DebugLibraries/DebugLibraries_content.html



Answer 4:

GDB可以使用。

它可以给之前被转储尝试呼叫。

http://sourceware.org/gdb/

http://en.wikipedia.org/wiki/GDB

具有源是伟大的,如果你能重现错误,甚至更好,因为你可以用它来进行调试。

在过去的工作对我来说太棒了。



Answer 5:

pflags命令还可用于确定状态是有用的每个线程是当它核心转储。 通过这种方式,你可以经常查明问题。



Answer 6:

安装使用dbx调试过程映像:

DBX [executable_file_name] [coredump_file_name]

重要的是,有可执行没有变化,因为核心被倾倒(即它不是重建)。

你可以看到堆栈跟踪,看看该程序与dbx命令“其中”坠毁在哪里。

可以上下移动的堆栈命令“向上”和“向下”,或跳转到与“帧[编号]”的确切堆栈帧,编号为在“哪里”的输出处看到。

您可以使用“打印[EXPR]”命令打印的变量或表达式的值。

玩得开心。



Answer 7:

我发现我的Solaris x86机器dbx将

/opt/SUNWspro/bin/dbx

干杯!



Answer 8:

我建议首先尝试GDB因为它更容易学习基本任务比在我看来,本地的Solaris调试程序。



文章来源: Solaris Core dump analysis