C++ 在VisualStudio中进行更好的调试?

C++ 在VisualStudio中进行更好的调试?,c++,visual-studio,debugging,visual-studio-2013,C++,Visual Studio,Debugging,Visual Studio 2013,我有一个包含数千行代码的程序,当在VisualStudio的调试模式下运行时,它可以很好地执行。但是,当我从Windows资源管理器运行同一个调试可执行文件时,它会给我一个“调试断言失败”错误,表示向量下标超出范围。行号在std::vector中,但我知道这不是真正的问题所在 我不能设置一个停止点来查看调用堆栈,因为我不知道在哪里停止它。另外,VisualStudio也没有捕捉到它。我有15k行代码和几十个向量。必须有一种方法可以配置VisualStudio或编译器,以便在程序从GUI运行时更仔

我有一个包含数千行代码的程序,当在VisualStudio的调试模式下运行时,它可以很好地执行。但是,当我从Windows资源管理器运行同一个调试可执行文件时,它会给我一个“调试断言失败”错误,表示向量下标超出范围。行号在
std::vector
中,但我知道这不是真正的问题所在

我不能设置一个停止点来查看调用堆栈,因为我不知道在哪里停止它。另外,VisualStudio也没有捕捉到它。我有15k行代码和几十个向量。必须有一种方法可以配置VisualStudio或编译器,以便在程序从GUI运行时更仔细地查询程序,从而捕获它。我的调试知识已经到了极限,请教我,聪明人


我跑过依赖步行者。有一些错误,但我认为这不相关。以防万一,下面是出现的情况:

最好的选择可能是在调试断言失败时中断代码。在Windows中,这称为实时(JIT)调试。要使用Visual Studio实现此目的,必须正确配置它。如果这对您没有帮助,请尝试直接编辑以下Windows注册表。VisualStudio的注册表值类似于


“C:\windows\system32\vsjitdebugger.exe”-p%ld-e%ld

在检查未初始化变量的代码后,我建议您添加一些print语句,以查看它在崩溃之前的状态


很多时候,这些错误都是由于未初始化的变量造成的

当断言失败时,如何进入调试器?它确实会出现并说“按重试以调试应用程序”,但它从未转移到Visual Studio。事实上,什么都没有发生。中止,重试,并忽略所有结束窗口关闭。然后你能在这之前从VisualStudio附加吗?哦,伙计,完全忘了这一点。在它发生之前不能这样做,但是附加进程仍然让我接近错误,我知道现在哪里出了问题。非常感谢。不过,为了进行对话,如果我不能做到这一点,我的下一步会是什么?我看不出从Visual Studio进行连接会有什么失败(最糟糕的情况是,您添加了
sleep
调用,以便有足够的时间进行连接)。我现在不在Windows计算机前,所以我不太确定这些选项,我可能会尝试看看为什么从“断言”对话框进行调试一开始就不起作用。我知道有用于调试钩子的注册表项,本可以找到它的。