2014-01-15 81 views
-1

我写了一个OpenTK的F#OpenGL封装,我看到当我运行我的应用程序大约5分钟时它会中止,抛出异常并将其打印到控制台。无法捕获未知的异常

问题是,visual studio中的控制台立即关闭,我无法看到消息输出。

所以我想我可以试着抓住它并添加一个像这样的断点。

let game = new HelloCube.Game() 

try 
    game.Run(60.,60.) 
with 
    | :? System.Exception as e -> 
     printfn "%s" e.Message 
     printfn "end" //breakpoint 

但它没有发现异常。

所以我看了看错误代码

The program '[4236] HelloCube.exe: Managed (v4.0.30319)' has exited with code 9008 (0x2330). 

,我发现

DNS RR set that ought to exist, does not exist. 

这不可能是正确的错误代码。一个DNS错误?

任何想法我可以尝试吗?

+0

如果您将调试器设置为在引发所有异常时停止,它的行为如何? –

+0

@RowlandShaw是的,我也试过,但它仍然中止并退出调试器。 –

+0

尝试订阅AppDomain.CurrentDomain.UnhandledException事件。 –

回答

1

(Console.ReadKey true) |> ignore添加到函数的末尾。这会导致控制台窗口在退出前暂停并等待按键(任意按键)(请参阅MSDN)。另外,使用e.ToString()而不是e.MessageException.ToString()会给你完整的痕迹和其他相关信息,通常是更有帮助,那么只是异常消息。

退出代码对于每个应用程序都是唯一的。查找错误代码时,您必须确保您正在查看的字典与应用程序和版本号相匹配。