在我无法访问的客户机器(WinXP SP2)上,我有一个在启动时崩溃的Win32 EXE(非托管C++).我想解决此问题的最佳方法是获取(小型)转储并稍后使用windbg或类似方法进行分析.
现在,我通常会告诉客户安装Windows调试工具并运行
cscript adplus.vbs -crash
Run Code Online (Sandbox Code Playgroud)
但是,您似乎无法将adplus用于在启动时崩溃的应用程序(http://support.microsoft.com/kb/q286350/说"在以下情况下不要使用ADPlus:如果必须对程序进行故障排除或在启动期间意外退出的进程").同一篇文章说"使用用户模式进程转储",但我未能成功安装它.
知道如何在Win32上启动崩溃的进程转储?
我正在使用一个有点不可靠的(Qt/windows)应用程序,部分是由第三方为我们编写的(只是试图将责任转移到那里).他们的最新版本更稳定.有点.我们收到的崩溃报告越来越少,但是我们收到很多关于崩溃的报告并且永远不会回来.情况多种多样,由于我们可以收集的信息很少,我们无法重现这些问题.
理想情况下,我想创建某种看门狗,注意到应用程序已锁定,并提供向我们发送崩溃报告.好主意,但有问题:
看门狗如何知道该过程已挂起?据推测,我们会对应用程序进行检测,以便定期对看门狗说"一切正常",但是我们在哪里放置它以保证频繁发生,但不太可能出现在应用程序结束时的代码路径上锁定.
发生崩溃时看门狗应该报告什么信息?Windows有一个不错的调试api,所以我相信所有有趣的数据都是可访问的,但我不确定什么对于追踪问题有用.
我正在打一个不能在我的机器上重现的错误,但每次都在我的客户机器上重复.我已经尝试了一切,现在我正在寻找IE8在崩溃后留下的任何调试数据(或其他).谷歌和微软的搜索没有给我什么.Internet Explorer 8在哪里存储其故障转储?它崩溃后定义向微软发送一些东西,我怎么能看到它?
我正在使用windbg对转储执行分析.以下是我运行的命令
.loadby sos mscorwks - 加载sos dll ~* e !clrstack - 查看所有线程~18s - 将上下文更改为我想要分析的线程!clrstack - 查看这个线程的调用堆栈.现在,我想转到堆栈中的每个帧并查看那里的对象/变量的值.我该怎么办?
有没有办法找出线程实际卡住的方法中的行号?
我正在尝试使用windbg分析崩溃转储,并且根据加载的符号,我将获得不定的故障转储.我的简单理解是符号只能帮助指向堆栈所指的内容,但堆栈本身是不变的.这显然是错的,但现在我不知道我在看什么.
下面是一个加载了所有符号的调用堆栈:
0:000> kn
# ChildEBP RetAddr
00 0012e120 7d61f60f ntdll!ZwGetContextThread+0x12
01 0012e130 000f0005 ntdll!RtlFreeHeap+0x711
WARNING: Frame IP not in any known module. Following frames may be wrong.
02 0012e1d0 6d5b5b20 0xf0005
03 0012e314 6d5b407f dbghelp!Win32LiveSystemProvider::OpenMapping+0x228
04 0012e464 0012e488 dbghelp!GenAllocateModuleObject+0x1ad
05 0012e4e4 6d5b588e 0x12e488
06 0012e69c 7d4d132f dbghelp!Win32LiveSystemProvider::GetOsCsdString+0x4d
07 0012e6b8 6d5b5fd2 kernel32!ReadProcessMemory+0x1b
08 0012e6e0 6d5b604e dbghelp!Win32LiveSystemProvider::ReadVirtual+0x3d
09 0012e700 6d5b2f3d dbghelp!Win32LiveSystemProvider::ReadAllVirtual+0x1d
0a 0012e728 6d5b304f dbghelp!WriteMemoryFromProcess+0x35
0b 0012e7ac 6d5b345b dbghelp!WriteThreadList+0xc1
0c 0012e7cc 6d5b367b dbghelp!WriteDumpData+0x83
0d 0012e90c 6d5b3778 dbghelp!MiniDumpProvideDump+0x174
*** WARNING: Unable to …Run Code Online (Sandbox Code Playgroud) 我正在调查我们的一个生产系统上的JVM崩溃,下面的hs_err_pid日志文件片段中的以下内存值代表什么?
Heap
par new generation total 1258624K, used 955445K [0x00000005c0000000, 0x00000006155b0000, 0x000000066aaa0000)
eden space 1118784K, 73% used [0x00000005c0000000, 0x00000005f1e52598, 0x0000000604490000)
from space 139840K, 98% used [0x000000060cd20000, 0x00000006153db100, 0x00000006155b0000)
to space 139840K, 0% used [0x0000000604490000, 0x0000000604490000, 0x000000060cd20000)
tenured generation total 2796224K, used 1745107K [0x000000066aaa0000, 0x0000000715550000, 0x00000007c0000000)
the space 2796224K, 62% used [0x000000066aaa0000, 0x00000006d52d4d90, 0x00000006c2e0c400, 0x0000000715550000)
compacting perm gen total 482944K, used 482943K [0x00000007c0000000, 0x00000007dd7a0000, 0x0000000800000000)
the space 482944K, 99% used [0x00000007c0000000, 0x00000007dd79fff0, 0x00000007dd7a0000, 0x00000007dd7a0000)
No shared spaces configured.
Run Code Online (Sandbox Code Playgroud)
我关注的是"压缩的perm gen"用法:它是指最大分配的perm gen堆使用的百分比,还是最大堆使用的百分比,还是其他什么?提供的百分比似乎是使用/总计的一个除法,这是分配的perm …
我的程序在执行期间崩溃并在控制台上写入Segmentation fault (core dumped)。但当前工作目录中没有任何生成的文件。问题是在哪里可以找到生成的故障转储文件?我正在使用 Ubuntu 13.04 / Erlang R15B01
有没有办法让 WinDbg 处于纯无头模式?我的用例是,我应该能够在命令行上模拟“!analyze -v”命令进行小型转储,而无需启动 WinDbg GUI。
我正在尝试分析一些迷你崩溃转储.我正在使用Windows 10 Pro Build 1607和WinDbg 10.0.14321.1024.我将符号文件路径设置为
SRV*C:\SymCache*https://msdl.microsoft.com/download/symbols
Run Code Online (Sandbox Code Playgroud)
基本上,每当我加载一个minidump(所有<1 MB .dmp文件)时,永远需要WinDbg来实际分析它们.我知道第一次运行可能需要很长时间,但是在它让我输入命令之前差不多花了12个小时.我认为,由于符号被缓存,重新打开相同的.dmp将花费很长时间.不是这种情况.它加载,几乎瞬间到"加载内核符号",然后再打印"BugCheck"行再过30分钟.已经过了30分钟,我仍然无法输入命令.
我的电脑有512 GB SSD,8 GB RAM和i5-4590.我认为不应该这么慢.
我究竟做错了什么?
我正在使用崩溃实用工具来分析vmcore(linux)结果,但在提取函数中的局部变量值时遇到困难。谷歌搜索相同的说一个人可以使用“信息本地人”,但当我使用它时,它说找不到命令。
搜索了一段时间后,发现下面的链接说,这种支持存在于进行自动编译的崩溃购买中。 http://www.redhat.com/archives/crash-utility/2009-May/msg00003.html
在vmcore转储中是否有用于提取局部变量的指针?