我可以在Visual Studio 2017调试器中查看未处理的异常吗?

时间:2017-04-05 12:59:13

标签: c++ visual-studio debugging

我正在使用的库(zmq)抛出异常。调试器中断并通知我。

如果可能的话,我怎么能看到这个例外。具体是what()消息?  无需在其周围放置try / catch并打印到输出流。

  • 它不会出现在Autos或Locals监视列表中。我已经在它发生的点周围搜索了堆栈帧。
  • 将$ exception添加到手动监视列表只会返回值"标识符$ exception未定义"
  • 使用内存资源管理器查询异常的位置并未显示任何有用的信息。

我已经读过这可以在使用CLR时完成 - 我可以在常规C ++中完成吗?

5 个答案:

答案 0 :(得分:3)

引用此answer

当抛出异常并带有break / continue / ignore选项时,您将获得一个窗口。复制并粘贴此对话框报告的十六进制地址,然后单击中断按钮。现在在观察窗口中输入类似:

的内容
(std::exception*)0xXXXXXXXX

答案 1 :(得分:1)

(1)请检查在工具 - >选项 - >调试 - >输出窗口下的输出窗口中是否启用了异常消息。 enter image description here

(2)如果它仍然没有异常消息,一个可能的原因是zmq确实不支持VS的异常抛出功能。当然,您可以编写一个通用的应用程序,如C#或VC ++,可以证明它。如果其他应用没有此问题,我们会考虑具体的zmq。

答案 2 :(得分:0)

步骤1.识别异常(它将记录在VS的输出窗口中) 步骤2.使用从输出中看到的异常放置异常断点。

如果这是ZeroMQ,我会打赌你在REQ套接字上发送2个请求而不等待回复。

答案 3 :(得分:0)

您的输出窗口

  

(查看/输出或点击CTRL + ALT + O)

是您应该看到该消息的位置,但您可能需要检查例外选项:

enter image description here

Look here了解更多详情

答案 4 :(得分:0)

据我所知,这目前无法实现。我添加了一个用户语音建议here,但我不确定微软何时会实现此功能。

目前,你可以做的是采用异常的类型位置(来自消息' 地址 strong>在模块:Microsoft C ++例外:在内存位置键入 位置。',然后添加到Watch窗口表达式“(类型*)位置”。如果类型是您无权访问的某种内部异常类型,那么您可以希望它来自 std ::例外并转而使用它。