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



我编写了一个控制台应用程序,该应用程序使用Socket*Async方法集,它不时崩溃。它并没有像同步代码一样向我显示它在哪里抛出了异常,控制台只是关闭了,我不知道我做错了什么。

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

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

编辑:

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

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

所以我不会问"我做错了什么?",我会问"我怎么才能发现我做错了哪些?"

  • 我可以在抛出异常的地方中断执行吗
  • 我可以在崩溃后查看调用堆栈以确定导致崩溃的方法吗
  • 你能提供一些建议来避免这种情况吗

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

启用系统。网络日志记录查看下发生的事情

最新更新