为什么VS2015会将断点从一个项目应用到另一个项目?

时间:2016-07-09 14:26:38

标签: debugging visual-studio-2015

我在Visual Studio 2015社区(更新3)中创建了一个解决方案,其中包含两个项目。每个项目都将此代码放在名为tiny.cpp的文件中:

#include "stdafx.h"

int tiny()
{
    return 0;
}

Project1.cpp中的主程序是:

#include "stdafx.h"

extern int tiny();

int main()
{
    tiny();
    return 0;
}

如果我在return中的tiny语句处设置断点,则调试器会正确捕获它并在IDE中显示代码。但是,如果我在同一个解决方案中创建第二个项目,使用名为tiny.cpp的相同文件,以及名为Project2.cpp的文件,其代码与Project1.cpp中的代码相同,并在调试器中启动该项目,如果在第二个项目中的任何一个文件中都没有设置断点,则调试器的行为就像在第一个项目的tiny函数中设置的断点在第二个项目中设置的那样tiny功能。

如果在第二个项目中我在} tiny设置了一个断点并在调试器中启动了第二个项目,那么两个断点都显示调试器捕获的时间其中一个是第一个项目的tiny.cpp副本,另一个来自第二个项目的tiny.cpp副本。

有趣的是,如果对 版本的tiny.cpp进行任何更改,行为就会消失,即使只是在一行的末尾添加注释(所以行号甚至不变)。更有趣的是,对两个版本进行相同更改(因此它们与更改之前不同,但在更改后保持相同)使行为成为可能走开。

今天早上,当我将一堆源文件从一个项目复制到另一个项目时,这对我起了作用。来自原件的断点继续影响副本,让我想起了一段时间,我仍在运行旧代码,而不是复制版本。

谁能告诉我为什么VS2015会出现这种行为?它有什么用处吗?

这是我尝试上传到微软的截图,但他们的上传器似乎无法正常工作:

0 个答案:

没有答案