3

我编写了一个控制台应用程序,它使用 Socket's 的*Async一组方法,它时不时地崩溃。它没有向我显示它在哪里引发了同步代码等异常,控制台只是关闭了,我不知道我做错了什么。

当涉及到这样的异步操作时,有没有办法在不知道将try/catch块放在哪里的情况下检测异常?

我只需要知道代码的哪一部分导致我的应用程序崩溃。

编辑:

未处理异常的常见情况是,当您使用 Visual Studio 调试代码时,它会暂停执行并向您显示导致异常的代码行(或至少是异常消息)。但是在某些情况下(例如与像 IOCP 这样的低级 API 交互),您的程序只会崩溃,并且调试结束时没有任何关于其原因的信息。

我需要的是一种查看特定异常的方法:
“发生了什么或在哪里(以哪种方法)发生了,所以我的程序崩溃了?”

所以我不会问“我做错了什么?”,我会问“我怎么才能知道我做错了什么?”

  • 我可以在抛出异常的地方中断执行吗?
  • 我可以在崩溃后查看调用堆栈以识别导致它的方法吗?
  • 你能提供任何建议来避免这种情况吗?
4

2 回答 2

0

单击Debug-menu -> Exceptions。确保Common Language Runtime Exceptions被抛出。有时 IDE 会取消选中此选项。我不知道为什么,但这很烦人。

于 2012-08-30T08:41:40.587 回答
0

启用System.Net 日志记录以查看下面发生的情况

于 2012-08-30T10:09:36.327 回答