如何捕获未捕获的异常? Windows 7的

时间:2011-07-25 11:22:26

标签: c# .net exception windows-7

我的程序在Windows XP中运行,但在Windows 7中没有任何异常崩溃。尝试catch不起作用。我也试过没有运气的application.unhandledexception。然后我尝试检查Windows管理并获得以下日志:

Level   Date and Time   Source  Event ID    Task Category

Error   7/25/2011 11:25:14 AM   Application Error   1000    (100)   "Faulting application name: myApp.exe, version: 1.0.0.0, time stamp: 0x4e2ce191

Faulting module name: ntdll.dll, version: 6.1.7601.17514, time stamp: 0x4ce7b96e

Exception code: 0xc0000005

Fault offset: 0x00052ca9

Faulting process id: 0x%9

Faulting application start time: 0x%10

Faulting application path: %11

Faulting module path: %12

Report Id: %13"

我不确定要显示哪部分代码,因为它有大型集合类,但我会回到编辑这篇文章。

我也试过从任务管理器转储文件,但我不确定如何使用它们。

我可以使用任何特定的工具吗?我正在使用VS2008。我查看了NLog,但我不知道该怎么办,所以我跳过了。

有什么建议吗?提示和技巧?

3 个答案:

答案 0 :(得分:3)

尝试使用ThreadExceptionEventHandler并查看。

 Application.ThreadException += new ThreadExceptionEventHandler(MyCommonExceptionHandlingMethod)

    private static void MyCommonExceptionHandlingMethod(object sender, ThreadExceptionEventArgs t)
    {
        //Exception handling...
    }

编辑:在Windows窗体应用程序中,当在应用程序的任何地方(在主线程上或在异步调用期间)抛出异常时,您可以通过在应用程序上注册ThreadException事件来捕获它。

编辑2

尝试兼容性?如果它工作正常,那么有些东西与Win7不兼容。 enter image description here

答案 1 :(得分:1)

您可以选择在Windows XP compatibility mode

中运行该程序

答案 2 :(得分:0)

Faulting module name: ntdll.dll说你很有趣,但你应该从代码中的任何P / Invokes开始。不应该从.NET导致这样的错误,所以它是你正在调用的一些本机DLL。

P / Invoke允许您从托管代码调用普通的,本机的,非托管的可执行文件。这可以是任何未在.NET中编程的东西 - 即绘图库,音频库等。例如,如果您有多媒体控件,则可能在不知道的情况下使用它。有一篇相当不错的文章right here

如果您正在与Microsoft Office进行COM Interop,则与上述相同。检查它是否是相同的Office版本,即使它是,您可能需要Microsoft的Primary Interop Assemblies版本。

您也可以尝试从Visual Studio启动应用程序,您可能会获得堆栈跟踪,它会告诉您应用程序在崩溃之前所采用的确切路径。然后你会知道发生了什么。