0

我们有一个用 .NET 3.5 编写的应用程序。这个应用程序适用于我们所有的系统,除了一个(我们希望它会工作的那个:/),它在 EventViewer 中有以下错误

========================

Event Type: Error
Event Source:   .NET Runtime 2.0 Error Reporting
Event Category: None
Event ID:   5000
Date:       1/28/2011
Time:       8:22:07 AM
User:       N/A
Computer:   MGx12-Production
Description:
EventType clr20r3, P1 Sync.exe, P2 1.0.0.0, P3 4d42d290, P4 mscorlib, P5 2.0.0.0, P6 492b834a, P7 df, P8 b, P9 system.argumentnullexception, P10 NIL.

For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
Data:
0000: 63 00 6c 00 72 00 32 00   c.l.r.2.
0008: 30 00 72 00 33 00 2c 00   0.r.3.,.
0010: 20 00 73 00 63 00 72 00    .s.c.r.
0018: 65 00 65 00 6e 00 7e 00   e.e.n.~.
0020: 31 00 2e 00 73 00 63 00   1...s.c.
0028: 72 00 2c 00 20 00 31 00   r.,. .1.
0030: 2e 00 30 00 2e 00 30 00   ..0...0.
0038: 2e 00 30 00 2c 00 20 00   ..0.,. .
0040: 34 00 64 00 34 00 32 00   4.d.4.2.
0048: 64 00 32 00 39 00 30 00   d.2.9.0.
0050: 2c 00 20 00 6d 00 73 00   ,. .m.s.
0058: 63 00 6f 00 72 00 6c 00   c.o.r.l.
0060: 69 00 62 00 2c 00 20 00   i.b.,. .
0068: 32 00 2e 00 30 00 2e 00   2...0...
0070: 30 00 2e 00 30 00 2c 00   0...0.,.
0078: 20 00 34 00 39 00 32 00    .4.9.2.
0080: 62 00 38 00 33 00 34 00   b.8.3.4.
0088: 61 00 2c 00 20 00 64 00   a.,. .d.
0090: 66 00 2c 00 20 00 62 00   f.,. .b.
0098: 2c 00 20 00 73 00 79 00   ,. .s.y.
00a0: 73 00 74 00 65 00 6d 00   s.t.e.m.
00a8: 2e 00 61 00 72 00 67 00   ..a.r.g.
00b0: 75 00 6d 00 65 00 6e 00   u.m.e.n.
00b8: 74 00 6e 00 75 00 6c 00   t.n.u.l.
00c0: 6c 00 65 00 78 00 63 00   l.e.x.c.
00c8: 65 00 70 00 74 00 69 00   e.p.t.i.
00d0: 6f 00 6e 00 20 00 4e 00   o.n. .N.
00d8: 49 00 4c 00 0d 00 0a 00   I.L.....
================================================

如您所见,此错误发生在 mscorlib 中。我已尝试按照这些说明进行操作,但似乎无法找到正确的转储文件。

我应该提一下,当您自己运行该应用程序时,它运行良好;只有当它被本机 Windows 容器调用时才会失败!所以,上面提到的方法对我来说真的不起作用。

也就是说,我确实安装了 Windows 调试工具,我可以看到在%TEMP%文件夹中创建了一个 dmp 文件,我希望我可以用它来调试并查看导致 mscorlib 中“空指针”的原因。不幸的是,这个 dmp 文件在创建后几秒钟就被删除了,因为它正被另一个程序使用,而该文件存在时无法访问该文件(即无法复制或重命名)。

有谁知道 Windows 报告工具将 dmp 文件保存在哪里?我在哪里可以找到适合此崩溃的 dmp 文件?

我该如何调试呢?

4

1 回答 1

2

我不知道在 Environment.FailFast 之外生成或保留小型转储的选项。您可以使用此答案中的提示对 Watson 日志进行逆向工程。但是,真的,这很痛苦,而且信息量不大。为 AppDomain.CurrentDomain.UnhandledException 编写事件处理程序并记录或显示 e.ExceptionObject.ToString() 的值。您将获得的堆栈跟踪几乎总是足以找出问题所在。

于 2011-01-28T17:00:24.520 回答