【发布时间】:2015-07-12 08:45:34
【问题描述】:
我有一个包含数千行代码的程序,在 Visual Studio 的调试模式下运行时可以正常执行。但是,当我从 Windows 资源管理器运行相同的调试可执行文件时,它给了我一个“调试断言失败”错误,指出向量下标超出范围。行号在std::vector,但我知道这不是真正的问题所在。
我不能设置一个停止点来查看调用堆栈,因为我不知道在哪里停止它。另外,Visual Studio 无论如何都没有捕捉到它。我有 15k 行代码和几十个向量。必须有一种方法可以配置 Visual Studio 或编译器以在程序从 GUI 运行时更多地询问程序以捕获它。我在调试知识的极限,教我,聪明的人!
我已经运行了依赖walker。有一些错误,但我认为这无关紧要。以防万一,这就是出现的情况:http://screencast.com/t/q3MoPRVH
【问题讨论】:
-
断言失败时闯入调试器怎么办?
-
它确实出现并说“按重试调试应用程序”,但它从未转移到 Visual Studio。事实上,什么也没有发生。 Abort、Retry 和 Ignore 都以窗口关闭结束。
-
那么你能在这发生之前从 Visual Studio 附加吗?
-
天哪,完全忘记了这一点。在它发生之前无法做到这一点,但附加该过程仍然让我接近错误,我现在看到它哪里出错了。谢谢!不过,为了交谈,如果我无法做到这一点,我的下一步是什么?
-
我看不出从 Visual Studio 附加可能会失败(最坏的情况是您添加
sleep调用以有足够的时间来执行此操作)。我现在不在 Windows 计算机前,所以我不太确定选项,我可能试图了解为什么从断言对话框进行调试一开始就不起作用。我知道有调试钩子的注册表项,本来可以找的。span>
标签: c++ visual-studio debugging visual-studio-2013