我用的pstack分析在Solaris中的核心转储文件
我还能如何分析从solaris的核心转储?
什么命令可以用来做呢?
其他什么信息将可从转储?
我用的pstack分析在Solaris中的核心转储文件
我还能如何分析从solaris的核心转储?
什么命令可以用来做呢?
其他什么信息将可从转储?
您可以使用Solaris模块调试,MDB,或DBX。 MDB带有SUNWmdb(或SUNWmdb X为64位版本)封装。
核心文件是您正在运行的进程,在坠毁时的图像。
根据您的应用程序是否与调试标志或不编译,你就可以查看堆栈的图像,从而知道哪个函数造成的核心,以获得被传递给函数的参数的值,该值变量,分配的内存区...
在最近的Solaris版本,您可以配置什么核心文件将包含与coreadm命令; 例如,你可以映射的内存段进程被装。
请参阅MDB文件和dbx文档 。 在GDB快速参考卡也有帮助,一旦你知道GDB的基本知识。
我想任何回答这个问题,应该用一个简单的食谱开始:
对于dbx的,配方是:
% dbx a.out core
(dbx) where
(dbx) threads
(dbx) thread t@3
(dbx) where
如果核心转储是从你写的或内置的程序,然后使用哪个调试器,您通常用于调试运行的应用程序。 他们都应该能够加载的核心文件。 如果你不挑剔调试,以及你使用Solaris,我将建议dbx的。 这将有助于获得的Sun Studio的最新版本FCS补丁,否则的Sun Studio的最新版本的快车。 这也是非常有帮助的,如果你能在核心文件加载到其中创建核心文件在同一系统上调试器。 如果库中的代码是在创建核心文件时不同,然后堆栈跟踪起不了作用,当它经过库。 调试器也使用操作系统的辅助库理解的libthread和运行时链接的数据结构,因此,如果您需要加载不同的机器上的核心文件,你要确保在OS上安装助手库匹配系统数据结构操作系统。 你可以找到你永远想知道的这是几年前写的白纸这些系统库的一切。
http://developers.sun.com/solaris/articles/DebugLibraries/DebugLibraries_content.html
GDB可以使用。
它可以给之前被转储尝试呼叫。
http://sourceware.org/gdb/
http://en.wikipedia.org/wiki/GDB
具有源是伟大的,如果你能重现错误,甚至更好,因为你可以用它来进行调试。
在过去的工作对我来说太棒了。
的pflags命令还可用于确定状态是有用的每个线程是当它核心转储。 通过这种方式,你可以经常查明问题。
安装使用dbx调试过程映像:
DBX [executable_file_name] [coredump_file_name]
重要的是,有可执行没有变化,因为核心被倾倒(即它不是重建)。
你可以看到堆栈跟踪,看看该程序与dbx命令“其中”坠毁在哪里。
可以上下移动的堆栈命令“向上”和“向下”,或跳转到与“帧[编号]”的确切堆栈帧,编号为在“哪里”的输出处看到。
您可以使用“打印[EXPR]”命令打印的变量或表达式的值。
玩得开心。
我发现我的Solaris x86机器dbx将
/opt/SUNWspro/bin/dbx
干杯!
我建议首先尝试GDB因为它更容易学习基本任务比在我看来,本地的Solaris调试程序。