【问题标题】:How to know the cause of thrown exception in c++如何知道c++中抛出异常的原因
【发布时间】:2017-08-09 20:17:08
【问题描述】:

我不是使用 Visual Studio 调试 c++ 应用程序的专家,但在 c# 中,通常只要出现异常,应用程序就会在代码中导致异常的确切位置中断。 在使用 Visual Studio 2017 的 c++ 中,调试器中断得如此之深,就像中断到 system.cpp 文件一样,这完全无法帮助我知道导致此异常的代码中的行号是什么。 根据下面的异常,我怎么知道我的代码中的行号是什么导致的?

[更新]

根据下面的剪辑,我设法从调用堆栈中获得了我想要的东西:

【问题讨论】:

  • 打开调用堆栈窗口。
  • Rusty,是不是调用栈中[External Code]前面的那一行?

标签: c++ visual-studio debugging exception-handling


【解决方案1】:

您可以使用 调用堆栈 来查看程序在代码中的哪个位置出错。 要显示调用堆栈窗口,请从菜单中:

Debug-->Windows-->Call Stack

然后双击与您自己的代码中的任何内容相对应的第一行。这是您自己的代码使程序中断的地方。您还可以移动到调用堆栈中的任何先前函数,检查变量等。

在发布模式下,C++ 异常不会跟踪调用堆栈。您需要设计和实现自己的异常处理机制。

【讨论】:

  • 我看到多行,最后一行叫做[外部代码]。在此之前双击该行会将我带到我的代码。所以这就是问题所在?
  • 是的,必须的。但这并不一定意味着错误的代码就在这一行。这可能是先前错误的结果。调用堆栈使您可以检查所有堆栈帧。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-07
  • 1970-01-01
  • 1970-01-01
  • 2017-08-02
  • 2012-01-18
相关资源
最近更新 更多