问题标签 [windows-error-reporting]
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.
.net - Windows 错误报告有时不会为 .NET 4 应用程序生成小型转储
我正在尝试诊断 .NET 4 应用程序的崩溃问题。上次它在用户机器中崩溃时,Windows 错误报告不会收集应用程序的小型转储。我检查了DumpFolder
注册表,我可以找到旧崩溃的转储文件,但最后一个没有新的转储文件。
崩溃的事件日志说:
应用程序:MyApp.exe
框架版本:v4.0.30319
描述:由于 IP 000007FEEC0F25E8 (000007FEEC0B0000) 处的 .NET 运行时内部错误,退出代码为 80131506,进程已终止。
通过一些搜索,看起来像是 CLR x64 中著名的并发 GC 错误。事件日志也不同于以前的崩溃。在以前的事件日志中,他们明确表示发生了“访问冲突”。退出代码是一样的。
我无法使用adplus
或procdump
获取崩溃转储,因为它们会显着降低性能。我想知道为什么这次 WER 没有得到迷你转储?
crash-reports - Windows 错误报告坚持不要在软件崩溃时创建完整转储
我正在尝试在生产机器上调试我的应用程序。它大约每 2 天崩溃一次,我不知道为什么。
几天来,我一直在尝试让生产机器在程序崩溃时产生完整的崩溃转储。有时确实如此,但有时,它不会生成完整的故障转储,而是创建简短的文本文件,其中仅列出所有已加载的模块并说明程序已崩溃。这些短文件保存在 %LOCALAPPDATA%\Microsoft\Windows Error Reporting\ReportArchive 中。
对于我的一生,我无法理解为什么会这样!我不能要求这些用户运行 adplus 或 windbg 或类似的东西。每次程序崩溃时,我只需要创建一个崩溃转储。
有人可以帮忙吗?我附上了 WER 的完整注册表设置。这些存在于 HKEY_LOCAL_MACHINE\Software\Wow6432Node 和 64 位节点上。如您所见,LocalDumps 键指向 C:\ProgramData\Microsoft\Windows\WER\LocalDumps 以保存故障转储,是的,每个人都拥有此文件夹的完全权限。
.net - Windows 错误报告“AppHangTransient”事件
我们的一位客户报告了我们的 .NET 应用程序的性能问题。
我们已要求他们检查其 Windows 事件日志,并注意到 Windows 错误报告已记录了与应用程序相关的多个信息级别条目。“AppHangTransient”对 WER 意味着什么?建议可能是挂起是暂时的,但我找不到书面确认。
故障桶,类型0
事件名称:AppHangTransient
回应:不可用
驾驶室编号:0
debugging - Windows (WER) 能否在崩溃进程的同时生成小型转储和完整转储?
我们在许多客户端上部署了一个应用程序,我们想要配置 Windows,以便在应用程序崩溃时收集应用程序的转储。由于崩溃并不频繁,我们希望确保有足够的转储信息以找到问题的根源,因此我们将 Windows 配置为生成完整转储。
鉴于客户端的上传速度较慢且转储约为 800 MB,我们正在考虑同时生成一个小型转储和一个完整转储,以仅在小型转储不包含足够的信息进行调试时收集完整转储。
这可能吗?如果不可能,我们可以使用命令行从转储中提取小型转储吗?
c# - 在没有用户提示的情况下使用 RegisterApplicationRestart 重新启动崩溃的程序
我正在使用 Windows 错误报告 API 调用RegisterApplicationRestart来注册一个应用程序,以便在应用程序崩溃或 PC 重新启动时由 WER 自动重新启动。
但是,当应用程序崩溃时,会弹出默认的 WER 对话框(“xyz 已停止响应”/“是否要发送有关该问题的更多信息”),并且只有在关闭此对话框后程序才会重新启动。
有没有办法抑制这个对话框?
如果我调用SetErrorMode(SEM_NOGPFAULTERRORBOX),则对话框会按预期被抑制,但重启本身也会停止工作。
如果我通过更改注册表项来全局HKEY_CURRENT_USER\Software\ Microsoft\Windows\Windows Error Reporting\DontShowUI
禁止对话框,我会得到相同的结果:对话框被禁止,但应用程序也不会重新启动。
我知道像第二个看门狗程序这样的解决方法,但我真的很想用 Windows 错误报告 API 的工具尽可能简单地解决这个问题。
powershell - 通过 PowerShell 使用 MEME 将产品添加到产品组
我正在尝试通过 Microsoft 生态系统元数据交换产品映射工具附带的 PowerShell 模块自动创建产品映射。我已经成功地创建了产品并成功映射了文件,输出文件也可以很好地导入工具本身。我遇到的问题是通过 PowerShell 模块将产品添加到产品组。我不断收到错误消息:Must add the product to the store before adding product groups
使用以下脚本:
如您所见,我在创建产品后尝试添加组,但它不起作用。理想情况下,有一些方法可以通过从导出的元数据文件中获取 ProductGroups 来设置组变量,但是这个 PowerShell 模块非常有限,只有两个可用的资源。有任何想法吗?
windows - 我可以禁用进程的未处理异常处理程序吗?
我正在 SAP 系统上执行系统测试。SAP 有时会崩溃,我想通过将虚拟机重置为以前保存的状态来从这些崩溃中恢复。
我的问题是我无法可靠地检测到此类崩溃。我已经创建了 WER LocalDumps 注册表项,但我没有得到转储。
似乎 SAP 已经注册了一个未处理的异常处理程序,并对不同类型的异常执行不同的任务。有时它会显示一个消息框并终止应用程序(例如,在压缩错误的情况下),有时它会伴随着所谓的 Short Dump。
我对消息框和短转储都不感兴趣,所以我正在寻找一种方法来禁用 SAP 的未处理异常处理程序。这应该会打开 WER,它会写入转储文件,我可以采取措施重新启动系统测试。
出于性能原因,我不想在每次测试时都重新启动 VM。
我努力了:
- 我基本上熟悉未处理的异常处理程序。我已成功地将它们应用到我自己的 .NET 代码中。
- 我查看了SetUnhandledExceptionFilter (MSDN)和类似内容,但它仅适用于调用进程,我无法修改 SAP 的代码。
- 我阅读了有关DisableUserModeCallbackFilter 的信息,但我认为这对我的情况没有帮助
我想知道是否有我可以激活的注册表设置(例如在 ImageFileExecutionOptions 中)或Shim。
c# - 未处理的异常和错误
考虑我们有这段代码:
我们有未处理的异常和finally
阻塞。
何时启用werfault
并且我Cancel
在尝试“自动解决问题”时按下最终块执行。
但是,如果我没有按下Cancel
并且在下一个窗口中单击Close The Program
finally 块不会执行。
最后,当我禁用werfault
并单击Close Program
finally 块执行时。
我在 c# 规范中没有找到任何描述这种情况的文档。我也发现了这个MSDN
:
在未处理的错误之后执行 finally 块取决于异常展开操作的触发方式。
但是没有解释,任何人都可以描述为什么会这样?
更新 1:我已经在 .Net Framework 4.5.1 和 4.5.2 中对其进行了测试。
windows - Windows 中的不同崩溃行为
我们已将 WER(Windows 错误报告)配置为在每次某些应用程序崩溃时创建转储。
它通常可以正常工作,但我们发现了几种无法正常工作的情况。我们以 Winword.exe 为例:
- 在某些情况下,该过程会简单地消失。没有窗口,没有事件日志,没有故障转储。没有什么。
- 在其他情况下,会出现一个窗口,告诉您应用程序已停止工作,但应用程序会自动重新启动,并且也不会生成故障转储。
- 其他时候,应用程序按预期结束,“应用程序停止工作”并且正常工作。
关于为什么会发生这种情况以及如何捕获这些崩溃并生成转储的任何想法?