问题标签 [minidump]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windows - 错误检查重新启动后损坏的 Windows 迷你转储
问候。
我最近一直在我的 xp 笔记本电脑上进行错误检查,这是最后一台的数据:
0x40000080 (0x8a43d130, 0x858ffd20, 0xba4f3e5c, 0x00000001)
我只启用了小型转储(我已经更改了它,但还没有看到 BSOD)并查看我的“C:\windows\Minidump”目录,我看到过去 6 个月的 11 个小型转储,大约两个一个月的错误检查
从“Windows 调试工具”运行 windbg 和朋友会导致错误“0n1392”,我简称为“损坏”。使用十六进制编辑器查看文件,我倾向于同意诊断,因为文件的顶部喷有 ASCII 字符串“PAGEPAGE”。
我真的有两个问题:
1) 什么会导致我所有的小型转储文件损坏?
2) 有没有办法提取任何数据以指出可能导致此错误检查的原因?
感谢您的帮助!
附录 I - dumpchk 对 mini-dump 文件的响应
附录 II - 损坏的 mini-dump 文件的十六进制显示:
windows - MINIDUMP_TYPE 枚举值的哪种组合会给我最“完整”的迷你转储?
我希望我的应用程序创建一个小型转储来帮助调试未经处理的异常。
在创建转储之前,我可能不知道我想要什么类型的迷你转储,那么我应该使用哪些MINIDUMP_TYPE标志组合来为我提供最完整的转储呢?
c++ - 我的 minidump 太大而无法由 Visual Studio 加载,我该如何解决?
当我的应用程序崩溃时,它会生成一个小型转储以允许事后调试。我使用选项 MiniDumpWithIndirectlyReferencedMemory 和 MiniDumpWithPrivateReadWriteMemory。
直到最近,当转储文件的大小开始超过 500MB 时,这一切都很好。当我想开始调试该大小的转储时,Visual Studio 会向我抛出以下错误。
“没有足够的存储空间来处理这个命令”
我有 WinXP 32 位,其中有 4GB 的 RAM,其中我使用的内存少于 1GB。根据 VS2008 在此过程中内存的经济性,它应该有足够的可寻址空间。
我不想做的事情:
- 破解 WinXP 以获得更多内存:该应用程序只会不断增长,因此这只会暂时起作用。这是我发现的可能操作列表: http ://www.msfn.org/board/topic/62001-not-enough-storage-is-available-to-process-this-command/
- 切换到 64 位操作系统
- 省略 MiniDumpWithPrivateReadWriteMemory 选项
那么我应该如何解决这个问题呢?
- 从转储中省略一些dll?通过不同的转储将包含的内存从 dll 组中拆分出来?关于如何做到这一点的任何想法?(如果这是可能的)
- ...?
windbg - windbg:获取在 UnhandledExceptionFilter 中创建的 minidump 的堆栈跟踪
我通过执行以下操作设置未处理的异常过滤器: SetUnhandledExceptionFilter(UnhandledException)
在我的 UnhandledException 函数中,我使用 MiniDumpWriteDump 写出一个 minidump:
MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hFile, MiniDumpNormal, excpInfo? &eInfo : NULL, NULL, NULL);
当我查看 WinDbg 中的堆栈跟踪时,我看不到太多:
MiniDumpWriteDump 文档提到 strack 跟踪可能不好,但我真的不明白我应该怎么做:http: //msdn.microsoft.com/en-us/library/ms680360%28v=vs.85 %29.aspx
任何帮助表示赞赏!
c++ - 由于不匹配/缺少 *system* 二进制文件,故障转储中的调用堆栈无效?
当我在 Visual Studio 2005 中打开 Windows 故障转储时,得到了这个调用堆栈:
查看模块加载信息:
我们看到这个二进制文件甚至没有加载,因为用于分析转储的机器与生成转储的机器不同。
我目前无法访问这台机器——我能以某种方式修复这个堆栈,还是我总是需要这个确切路径位置的确切二进制文件?
c# - 安装 COM AddIn 后,在 Excel 中测试连接,出现蓝屏
COM Excel AddIn, C#, VS 2008, Excel COM Addin,在测试虚拟机上测试,工作正常客户安装后蓝屏,不知道为什么。以下是客户得到的。有人可以帮忙吗?我不知道这是什么,是什么原因造成的。不确定这是由我的插件引起的还是客户的 PC 出现问题。
谢谢
Microsoft (R) Windows 调试器版本 6.12.0002.633 X86 版权所有 (c) Microsoft Corporation。版权所有。
加载转储文件 [c:\windows\minidump\Mini050911-01.dmp] 迷你内核转储文件:只有寄存器和堆栈跟踪可用
警告:无法访问的路径:'c:\windows\i386' 符号搜索路径为:srv*c:\symbols*http://msdl.microsoft.com/download/symbols 可执行搜索路径为:c:\windows\i386 Windows XP 内核版本 2600 (Service Pack 3) MP (2 procs) 免费 x86 兼容产品:WinNt,套件:TerminalServer SingleUserTS 构建者:2600.xpsp_sp3_gdr.101209-1647 机器名称:内核基础 = 0x804d7000 PsLoadedModuleList = 0x8055d720 调试会话时间:周一2011 年 5 月 9 日 09:47:22.099 (UTC - 5:00) 系统正常运行时间:2 天 15:09:35.096 加载内核符号 .................... …………………………………………………………………………………………………………………………………… ..................................................... ...加载用户符号加载卸载的模块列表......................
- *
- 错误检查分析 *
- *
使用 !analyze -v 获取详细的调试信息。
错误检查 1000007F, {8, 80042000, 0, 0}
* 警告:无法验证 igxpmp32.sys 的时间戳 错误:模块加载完成,但无法为 igxpmp32.sys 加载符号 无法加载映像 igxpdx32.DLL,Win32 错误 0n2 WARNING: Unable to verify timestamp for igxpdx32.DLL * ERROR: Module load completed but symbols could not be loaded for igxpdx32.DLL 可能是由于:igxpmp32.sys (igxpmp32+44184)
跟进:MachineOwner
0: kd>!分析-v
- *
- 错误检查分析 *
- *
UNEXPECTED_KERNEL_MODE_TRAP_M (1000007f) 这意味着在内核模式下发生了一个陷阱,它是一种内核不允许拥有/捕获的陷阱(绑定陷阱)或者总是立即死亡(双重错误)。bugcheck 参数中的第一个数字是陷阱的编号(8 = 双故障等) 请参阅 Intel x86 系列手册以了解有关这些陷阱的更多信息。这是一部分这些代码:如果 kv 显示 taskGate 在冒号之前的部分使用 .tss,则 kv。否则,如果 kv 显示一个陷阱帧,则在该值上使用 .trap 否则,适当帧上的 .trap 将显示捕获陷阱的位置(在 x86 上,这将是与过程 KiTrap 一起使用的 ebp) Endif kb 然后将显示更正的堆栈. 参数: Arg1:00000008,EXCEPTION_DOUBLE_FAULT Arg2:80042000 Arg3:00000000 Arg4:00000000
调试细节:
BUGCHECK_STR:0x7f_8
CUSTOMER_CRASH_COUNT: 1
DEFAULT_BUCKET_ID:DRIVER_FAULT
PROCESS_NAME:EXCEL.EXE
LAST_CONTROL_TRANSFER:从 805362cb 到 80535dc8
堆栈文本:
KiFastCallEntry+0xfc 97d0d574 805e701e 97d0d810 82000000 97d0d594 nt!ZwOpenKey+0x11 97d0d7e4 805e712a 00000002 805e70a0 00000000 nt!RtlpGetRegistryHandleAndPath+0x27a 97d0d82c 805e73e3 97d0d84c 00000014 97d0dba0 nt!RtlpQueryRegistryGetBlockPolicy+0x2e 97d0d854 805e79eb 00000003 e3fba72c 00000014 nt!RtlpQueryRegistryDirect+0x4b 97d0d8a4 805e7f10 e3fba72c 00000003 97d0d930 nt! RtlpCallQueryRegistryRoutine+0x369 97d0db40 b92f8184 00000005 e5eb4a28 97d0dba0 nt!RtlQueryRegistryValues+0x482 警告:堆栈展开信息不可用。以下框架可能是错误的。97d0dbe8 b92bd85b 00000005 877fe5f4 877fe6f4 igxpmp32+0x44184 97d0e260 b92b9a7b 8938b358 97d0e290 00000000 igxpmp32+0x985b 97d0e274 b9496729 8938b358 97d0e290 00000a0c igxpmp32+0x5a7b 97d0e338 804ef19f 8938b040 8781d6b8 0000080c VIDEOPRT!
堆栈命令:kb
FOLLOWUP_IP: igxpmp32+44184 b92f8184 ?? ???
SYMBOL_STACK_INDEX:12
SYMBOL_NAME:igxpmp32+44184
FOLLOWUP_NAME:机器所有者
模块名称:igxpmp32
IMAGE_NAME:igxpmp32.sys
DEBUG_FLR_IMAGE_TIMESTAMP:4b47be93
FAILURE_BUCKET_ID:0x7f_8_igxpmp32+44184
BUCKET_ID:0x7f_8_igxpmp32+44184
跟进:MachineOwner
windows-xp - XP SP3 机器上的应用程序故障转储在哪里?
过去,应用程序崩溃(未处理的异常)会在 XP 机器上的 %TEMP% 文件夹中创建一个小型转储,但看起来微软已经改变了这个逻辑——也许是通过更新。
当用户级应用程序或服务崩溃时,它是否仍会创建一个小型转储?它在哪里得救?
PS:我对 BSOD、系统或内核转储不感兴趣。这与不会关闭 Windows 的用户级应用程序崩溃有关。
windows - 如何从小型转储中提取堆栈跟踪?
我有一大堆 minidump,它们是在应用程序运行时通过 MiniDumpWriteDump 记录的。小型转储是在与我的开发机器具有不同操作系统版本的机器上创建的。
现在我正在尝试编写一个程序,使用 dbghelp.dll 从小型转储中提取堆栈跟踪。我正在走 MINIDUMP_MODULE_LIST 并调用 SymLoadModule64,但这无法从公共符号服务器下载 pdb(kernel32 等)。如果我将“C:\Windows\System32”添加到符号路径,它会找到 dll 并下载符号,但它们当然与 minidump 中的 dll 不匹配,因此结果毫无用处。
那么如何告诉 dbghelp.dll 下载并使用正确的 pdb?
[编辑]
我忘了说 SymLoadModule64 只接受一个文件名,没有版本/校验和信息,所以显然单独使用 SymLoadModule64 dbghelp 不可能确定要下载哪个 pdb。
该信息实际上在 MINIDUMP_MODULE_LIST 中可用,但我不知道如何将其传递回 dbghelp API。
有 SymLoadModuleEx 需要额外的参数,但我不知道这是否是我需要的或者我应该为额外的参数传递什么。
[编辑]
到目前为止没有运气,尽管我注意到调试 SDK 中还有 dbgeng.dll 与 dbghelp.dll 一起分发。MSDN 看起来有据可查,并说它与 windbg 使用的引擎相同。也许我可以用它来提取堆栈跟踪。
如果有人可以向我指出一些使用 dbgeng.dll 处理小型转储的介绍,这可能也会有所帮助,因为 MSDN 仅记录了各个组件,但没有记录它们如何协同工作。
iis - 如何使用 ADPLUS _ONLY_ 获取 MiniDumpOnSecond
对于生产 Win2003 Web 服务器,我希望能够在 w3wp.exe 进程崩溃时始终记录小型转储...我已阅读 ADPLUS 的文档,并将其 xcopy 部署到生产 Web 服务器,并且已从命令行启动 adplus.exe,如下所示:
adplus.exe -crash -MiniOnSecond -NoDumpOnFirst -pmn w3wp.exe -o C:\Dumps
这确实记录了“MiniOnSecond”,但它也首先记录了完整的转储——我不想要那些(它们是大文件,没有我需要的东西)。有没有人找到让“-NoDumpOnFirst”标志真正起作用的方法?此外,每次重新启动机器时,我都希望这种行为 - 如果不运行批处理文件,如何在重新启动时完成?我已经阅读了有关 Windows 错误报告 (WER) 的信息,在 Win2008R2 服务器上实现这种行为是微不足道的——如何在 2003 服务器上实现这一点?
我已经阅读了 ADPLUS 和 WER 的文档——但我需要有关实际命令行和/或注册表设置的帮助,以便在 Win 2003 服务器上轻松捕获小型转储。谢谢你的帮助!