如何获取 Java.exe/jvm.dll 的符号文件以分析崩溃核心转储文件?
Posted
技术标签:
【中文标题】如何获取 Java.exe/jvm.dll 的符号文件以分析崩溃核心转储文件?【英文标题】:How do I get symbol files for Java.exe/jvm.dll to analyse crash core dump files? 【发布时间】:2009-01-08 15:09:01 【问题描述】:我有一个在 Websphere 应用服务器上运行的 Java 应用程序。当我分析系统崩溃核心转储文件时,我得到如下信息:
ERROR: Symbol file could not be found. Defaulted to export symbols for J9THR23.dll
如何获取 Java 的符号文件?
提前致谢。
更多细节在这里:
*******************************************************************************
* *
* Exception Analysis *
* *
*******************************************************************************
*** ERROR: Symbol file could not be found. Defaulted to export symbols for J9THR23.dll -
*************************************************************************
*** ***
*** ***
*** Your debugger is not using the correct symbols ***
*** ***
*** In order for this command to work properly, your symbol path ***
*** must point to .pdb files that have full type information. ***
*** ***
*** Certain .pdb files (such as the public OS symbols) do not ***
*** contain the required information. Contact the group that ***
*** provided you with these symbols if you need this command to ***
*** work. ***
*** ***
*** Type referenced: ntdll!_PEB ***
*** ***
*************************************************************************
*** ERROR: Symbol file could not be found. Defaulted to export symbols for j9jit23.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for java.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for j9gc23.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for jvm.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for jclscar_23.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for j9ute23.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for J9PRT23.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for j9vm23.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for DBGHELP.DLL -
巩俐
【问题讨论】:
我从不查看来自 websphere 的转储。通常,应用程序日志包含确定导致 java 应用程序崩溃的所有信息。你在找什么? 【参考方案1】:您可以在此站点上获得 JDK 的调试版本。
http://download.java.net/jdk6/
查找 jdk-6u12-ea-bin-b03-windows-i586-debug-22dec2008.jar,91.47 MB
它包括 .pdb 文件
【讨论】:
我相信这里提供的文件不是真正的 PDB 文件,而是 Java 二进制文件的完整版本,具有不同的编译选项,恰好包括 PDB 文件。但是这些对查看生产 JVM 中的现有转储没有帮助。【参考方案2】:看起来调试器正在寻找 PDB 文件,据我所知,Java 应用程序的调试信息并不是 PDB 文件。 PDB 文件是由 VisualStudio 在创建 Windows 本机应用程序时生成的,因此调试器似乎正在寻找应用程序服务器的调试符号。不知道 WebSphere 是否带有自己的调试版本。另一方面,如果您想要调试 Java 应用程序的符号,您只需要使用 -g
选项重新编译它。
【讨论】:
以上是关于如何获取 Java.exe/jvm.dll 的符号文件以分析崩溃核心转储文件?的主要内容,如果未能解决你的问题,请参考以下文章
Aspose.Words 如何获取word每个段落的编号 或者项目符号?