0

向旧的 VB6 应用程序添加了 .Net 组件(C#、COM 互操作)。在更改前后,旧应用程序有时会崩溃(访问冲突)。然而不同的是,事后调试器(即 drwtsn32.exe)不再启动。在 C# 中捕获错误不是一种选择,因为该错误不是 .Net 调用堆栈的一部分,因此也不会触发 MyHandler:

AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.UnhandledException += new UnhandledExceptionEventHandler(MyHandler);

如何再次触发事后调试?提前感谢您的帮助!G更多

4

2 回答 2

1
  1. 您可以配置注册表,以便调试器/转储程序在崩溃时运行。有关 Google 的更多详细信息(请参阅收集用户模式转储以及配置自动调试)。
  2. 正如 Hans Passant 所提到的,一些工具可以通过在第二次机会异常上创建转储来帮助您解决这个问题(但如果错误是随机的并且如您所说的那样罕见,那么这些工具就不太有用):ProcDump(SysInternals),ADPlus(调试工具视窗)。
于 2013-01-09T21:34:34.210 回答
1

ProcDump 作为 XP 系统(发生问题的地方)上的事后调试器可以正常工作,而如果 .net 是应用程序的一部分,则 drwtsn32 会失败。谢谢您的帮助!

于 2013-01-10T07:45:44.533 回答