我们有一个使用JNI的桌面应用程序,偶尔会导致JVM崩溃.幸运的是,JVM生成了一个hs_err_pidXXXX.log文件,这在调试此类错误时非常有用.但是,它似乎总是转到当前的工作目录,并且从那里挖掘它很烦人,因为我们的其他日志文件都转到特定的"日志文件位置".
是否可以为这些"崩溃转储"文件指定不同的位置?怎么样?
我想在我的进程崩溃时创建核心转储.目前我正在遵循这种方法:
但我希望尽量减少步骤数量,以便:
ulimit -c unlimited手动执行命令" ".所以我有两个问题:
ulimit -c unlimited"我有一个Java应用程序,有一半时间只是挂起,另一半JVM崩溃.有没有一种工具可以用来查看发生了什么事情让它挂起和/或崩溃?我正在使用CentOS 5.6
首先是一些背景:我有一个多线程WinForms应用程序正在与本机dll互操作.这个应用程序有时会因未处理的异常而崩溃,我们正试图调查它为什么会发生.为了方便它,我正在创建一个全局异常处理程序,我计划从中生成进程转储文件.
现在提出疑问:截至目前,这个应用程序有处理程序,Application.ThreadException但它仍然与未处理的异常崩溃.我正在考虑添加一个处理程序,AppDomain.UnhandledException虽然我不确定它是否会有所帮助.在这种情况下是否存在任何可能未被处理的未处理异常Application.ThreadException?
我正在使用完整的崩溃转储和Windbg调试.NET 4.0 Web应用程序.我似乎能够获得所有的所有版本以匹配,但是当我尝试获得所有线程的托管堆栈跟踪时
操作系统线程ID:0x7cd4(13)子SP IP呼叫站点GetFrameContext失败:1
对于我所有的托管线程.我有什么想法我错了以及如何解决它?
我试图为我的应用程序创建一个转储文件崩溃.我目前正在使用带有-e标志的procdump.exe来执行此操作,因此如果我的应用程序中有未处理的异常,procdump会为我创建一个转储文件.
我以为我已经完成了,但后来我发现我的应用程序崩溃并且procdump没有创建转储文件.经过一些调查后,我发现无效使用vector :: front会导致运行时错误.我打开了_SECURE_SCL_THROWS标志,之后procdump.exe -e确实捕获了崩溃并创建了一个转储文件.
现在问我的问题:现在procdump.exe -e会在我的应用程序崩溃时始终创建转储文件吗?我如何保证我没有任何其他procdump -e对我不利的场景?
我们在Windows上,我们希望在我们的应用程序意外退出的所有场景中获得崩溃转储(可能正在使用MiniDumpWriteDump).
到目前为止,我们已经确定并设置了以下内容:
SetUnhandledExceptionFilter 对于未处理的异常(Win32以及"普通"C++)._set_invalid_parameter_handler 对于CRT无效的参数处理_set_abort_behavior加上一个SIGABRT处理程序来解释调用abort()我们错过了什么吗?(模拟一些非合法调用的代码ExitProcess,TerminateProcess或其中一个exit变体.)
我会注意到这里的问题与如何获得崩溃转储是正交的.例如,如果你想要一个崩溃转储abort,你总是必须使用,_set_abort_behaviour因为否则只是中止exits.
我还要注意,在Windows7 +上,不设置SetUHEF并且只是在注册表中设置"正确的"WER转储设置通常是可行的方法.
我捕获了在64位Windows操作系统上运行的32位.NET应用程序的故障转储.在分析过程中,有人发现我有一个64位转储并告诉我由于错误的位数而无法分析这个转储.
使用Windows任务管理器创建转储时,我不知道我做错了什么.这始终适用于32位操作系统.
我怎样才能为.NET提供良好的转储,尤其是正确的位数?
除了堆转储之外java 6还生成线程转储(java_pid14941.hprof)
这是我的一个应用程序发生的事情.
java.lang.OutOfMemoryError:超出GC开销限制将堆转储到java_pid14941.hprof ...
我确实在工作目录中找到了ava_pid14941.hprof,但没有找到任何包含线程转储的文件.当我得到这个OutOfMemory错误时,我需要知道所有线程正在做什么.
是否有任何配置选项除了内存异常外的堆转储外还会产生线程转储?
在Windows环境(XP和Win 7)中: