2009-12-01 108 views
1

我有一个相当大的C++项目,并且试图使用调试器来逐步执行一些代码。不幸的是,它有时会决定退出该模式,只需执行代码而不必关注我按下F10并且不会在随后的断点处断开的事实。我不知道什么时候它会退出,但它似乎始终如此。Visual Studio 2008 C++调试器退出Vista下的单步模式

具体而言,我试图看看如何计算某个显示的某个元素。我在计算发生的地方放置断点。调试器会停止其中的一部分(没有达到我需要的程度),然后忽略所有其他部分,最终的图像出现在窗口中。有些时候,我一直在单步执行代码,并且突然间它开始执行。

这是在64位Vista上运行的Visual Studio 2008 SP1中使用Visual C++。代码以调试模式编译,未启用优化。我已经做了一个干净而完整的重建,但没有解决这个问题。

有谁知道可能是什么原因造成的?有什么我可以做的吗?

编辑:我没有线程参与,我失去了休息时间,我刚刚安装了this recommended fix,仍然有问题。

回答

2

我想我以前遇到过这个。

您可以下载修补程序,这将纠正这个问题和其他问题(点击此处下载): http://code.msdn.microsoft.com/Project/ProjectDirectory.aspx?TagName=Visual%20Studio%202008,Hotfix

我装了一堆,并没有因为出现了问题。安装完成后,您可以在“关于”框中看到它们。

我不会花时间选出最重要的,因为我在工作中......但是可能至少有3或4个你想要安装。我认为某些修补程序可能在某个时间被分组到某种SP1中(链接中也提供了该修补程序)。

编辑(回复原帖子中的修改):我确定一个修复程序解决了类似于您所描述的问题,因为安装了一组修复程序解决了一群同事正在制作的投诉(主要的投诉是在“它有时忽略了我的断点并继续跑过它们!”)。我建议你继续安装可能适用的东西。

0

你确定你正在调试你只是生成可执行文件?也许在调试模式下的设置是错误的,并且您正在调试之前编译的一个...为了确保您可以从Explorer中运行调试可执行文件并稍后连接Visual Studio。

如果这不是问题,你可以尝试一些ASM:

__asm __emit 0xF1; 

这将执行后打破。 (更多关于http://ccollomb.free.fr/blog/?p=30

+0

我实际上不得不使用下面的语法:__asm {_emit 0xF1}; (花括号和_emit中只有一个下划线) – Drealmer 2010-12-05 13:21:51

相关问题