none
.Net 下未捕获异常 system.argumentexception RRS feed

  • 问题

  • 程序在长时间运行后(2个月)报一个异常,程序未捕获,导致程序直接挂掉。程序为控制台程序,有WCF应用,多线程操作。异常在“事件查看器”中显示错误信息如下:

    事件类型: 错误
    事件来源: .NET Runtime 2.0 Error Reporting
    事件种类: 无
    事件 ID: 5000
    日期:  2010-3-31
    事件:  10:13:13
    用户:  N/A
    计算机: ZHESHANGQIAN1
    描述:
    EventType clr20r3, P1 sunyard_remote.exe, P2 1.2.4.1204, P3 4b188046, P4 mscorlib, P5 2.0.0.0, P6 4889dc80, P7 2a34, P8 84, P9 system.argumentexception, P10 NIL.

    有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp 的帮助和支持中心。
    数据:
    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 75 00 6e 00    .s.u.n.
    0018: 79 00 61 00 72 00 64 00   y.a.r.d.
    0020: 5f 00 72 00 65 00 6d 00   _.r.e.m.
    0028: 6f 00 74 00 65 00 2e 00   o.t.e...
    0030: 65 00 78 00 65 00 2c 00   e.x.e.,.
    0038: 20 00 31 00 2e 00 32 00    .1...2.
    0040: 2e 00 34 00 2e 00 31 00   ..4...1.
    0048: 32 00 30 00 34 00 2c 00   2.0.4.,.
    0050: 20 00 34 00 62 00 31 00    .4.b.1.
    0058: 38 00 38 00 30 00 34 00   8.8.0.4.
    0060: 36 00 2c 00 20 00 6d 00   6.,. .m.
    0068: 73 00 63 00 6f 00 72 00   s.c.o.r.
    0070: 6c 00 69 00 62 00 2c 00   l.i.b.,.
    0078: 20 00 32 00 2e 00 30 00    .2...0.
    0080: 2e 00 30 00 2e 00 30 00   ..0...0.
    0088: 2c 00 20 00 34 00 38 00   ,. .4.8.
    0090: 38 00 39 00 64 00 63 00   8.9.d.c.
    0098: 38 00 30 00 2c 00 20 00   8.0.,. .
    00a0: 32 00 61 00 33 00 34 00   2.a.3.4.
    00a8: 2c 00 20 00 38 00 34 00   ,. .8.4.
    00b0: 2c 00 20 00 73 00 79 00   ,. .s.y.
    00b8: 73 00 74 00 65 00 6d 00   s.t.e.m.
    00c0: 2e 00 61 00 72 00 67 00   ..a.r.g.
    00c8: 75 00 6d 00 65 00 6e 00   u.m.e.n.
    00d0: 74 00 65 00 78 00 63 00   t.e.x.c.
    00d8: 65 00 70 00 74 00 69 00   e.p.t.i.
    00e0: 6f 00 6e 00 20 00 4e 00   o.n. .N.
    00e8: 49 00 4c 00 0d 00 0a 00   I.L.....

    上述错误是什么原因造成的呢?

    2010年4月1日 2:11

全部回复

  • 引起这个问题的原因很多,您最好能把 StackTrace 贴出来看看具体是什么参数错误。
    Mark Zhou
    2010年4月1日 8:03
  • 程序本身未捕获到异常。是直接挂掉的。程序对所有的地方都进行异常捕获了。但未捕获。
    2010年4月1日 12:14
  • 你好!

         这个异常是某些参数不正常导致的,请检查你的源代码!


    周雪峰
    2010年4月1日 12:22
    版主
  • 周雪峰

    你好!

     

            程序不是特别复杂,就两块:

            1:提供接口供其他程序调用。2:根据情况调用其它接口。

            我现在想知道如何能重新这个异常?

    2010年4月1日 15:03
  • 不知道……

    呵呵。

    有些问题是很难复现的。 有时候还需要一点点运气。

    给你一个建议,用Windbg.exe -I 将Windbg 设为默认调试器,或者将Visual Studio 设为默认调试器。这样错误出现时,操作系统会自动启动Windbg 或者Visual Studio 以便实现调试。当然,你得在目标计算机安装Windbg 或者 Visual Studio。

    总之你这个问题,光依靠事件日志现在无法定位。

    2010年4月1日 15:09
  • 你好!

     

            有没可能是某个全局变量参数,因程序长时间运行导致异常,引发了这个问题?乱猜测的。

     

     

    谢谢各位!

     

            目前能处理异常未能捕获的方式为“UnhandledExceptionEventHandler ”,但使用此方式要等问题重现才能找出问题的原因。

            请问?有什么好的代码分析器能帮助分析此类问题。避免程序中多处存在此类问题。

    • 已标记为答案 abanmao 2010年4月1日 15:34
    • 取消答案标记 abanmao 2010年4月1日 15:35
    2010年4月1日 15:32
  • 理论上,处理逻辑异常是程序员的事情,程序帮不了什么忙,程序只能帮忙检查有没有内存泄露、死循环等,可以用checkbounder(不知道有没有.net下的版本)。

    如果2个月才出一次问题,那么基本还可以接受的(以前windows98的时代每天蓝屏一次是很正常的事情,还照样用的很欢……)要问题重现也只能等了。


    霸王
    2010年4月1日 17:28