如何调试与低级API(如I / O完成端口)交互的代码?

时间:2012-08-30 06:10:05

标签: c# visual-studio-2010 debugging asynchronous iocp

我写了一个控制台应用程序,它使用Socket的{​​{1}}方法集,并且不时崩溃。它没有告诉我它在哪里抛出异常代码,如同步代码,控制台只是关闭,我不知道我做错了什么。

有没有办法在不知道放置*Async / try块的位置的情况下检测异常操作时的异常?

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

修改

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

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

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

  • 我可以在抛出异常的位置执行执行中断吗?
  • 我可以在崩溃后看到调用堆栈以确定导致它的方法吗?
  • 你能否提供任何建议以避免这种情况?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

启用System.Net logging以查看

下发生的事情