如何在 VS C++ 中查找发生异常的位置

How to find the location where exception occurred in VS C++

本文关键字:异常 位置 查找 VS C++      更新时间:2023-10-16

我收到此异常:

Microsoft C++ exception: std:out_of_range at memory location 0xBlahBlahBlah

如何在代码中找到此位置?

一种方法是为异常设置中的所有内容启用"抛出时中断"。它将有一个可以通过复选框打开的异常类型列表。我通常会把它们全部打开然后走。在此过程中,您可能会遇到一些已处理的异常,但您不应该错过问题之一。

您可以在以下位置找到它: Debug->Windows->Exception Settings

完成后,我建议将其恢复为默认设置(有一个图形按钮(,这样您就不会在每次抛出已处理的异常时都中断。

以下是解决问题的步骤:

  1. 查找在反汇编窗口中的"异常:内存位置 0xXXXXX 的 EEEE"位置中显示的内存位置。
  2. 在该位置设置断点并运行程序,直到断点。
  3. 检查调用堆栈以查找实际引发异常的函数。

由于某种原因,当引发 std::out_of_range 异常时,即使引发 std::exception 时调试器异常设置设置为中断,调试器也不会中断。

我的方法是在某处设置一个断点,然后按住 F10 直到它引发异常。现在您知道错误在哪里了。

此错误是运行时逻辑错误,在许多情况下可能会发生,要找到它,您应该跟踪代码并查找一些逻辑错误。

例如
int x[4];
x[5] = 1;

在这种情况下,您使用的是不允许使用的内存单元。

相关文章: