2008-08-28 216 views
4

我正在VS 2008中工作,并在一个解决方案中有三个项目。我正在通过附加到由第三方应用程序(SalesLogix,CRM应用程序)调用的.net进程进行调试。Visual Studio 2008调试问题

一旦它连接到进程并尝试在其中一个项目中设置断点,它不会在该文件中设置断点。它实际上将当前选项卡切换到另一个项目中的另一个文件,并在该文档中设置断点。如果文件没有打开,它甚至可以为我打开它。我无法解释这一点。我没有任何线索。有人看到这种奇怪的行为?如果我自己没有看到它,我不会相信它。

更多信息:如果我在附加前设置了断点,它会显示“红点”,并表示没有符号加载......没问题......我期待这一点。当我从SalesLogix附加并调用.NET代码并切换回VS时,我的断点完全消失了(甚至没有警告源代码与调试文件不匹配)。当我尝试手动加载调试文件时,则会收到一条消息,指出符号文件与模块不匹配。 .pdb和.dll的时间戳是一样的,所以我很难过。

任何人有任何想法?

THX,

杰夫

+0

您是在方法/函数调用中设置断点的行吗?也许函数已经被内联,所以VS足够聪明,可以在方法本身中设置断点。 – 2008-08-28 00:27:27

回答

4

我看到了旧版本VS.Net此功能(2003年,我认为)。它可能仍然存在于当前版本中,但我没有遇到它。看起来即使在不同的目录中,具有相同名称的文件也会混淆VS.Net,并且它最终会在具有相同名称的文件中设置断点。只有当文件中的类都具有相同的名称时才可能发生。对于我想的命名空间来说太多了。

您还可能需要检查您的构建配置,以确保所有项目实际上都是以调试模式构建的。我知道当配置在某种程度上改变了解决方案时,我被捕了几次,有些项目没有在调试模式下编译。

0

Kibbee,你是对的!这是两个在不同文件夹中具有相同名称的文件。我在第58行的正确文件中设置了断点 - 它将断点放在第58行的另一个文件上。我终于可以通过使用“Debug - > New Breakpoint - > Break at Function”来设置断点名称“菜单选项并输入我的功能名称。它完全停止了。

我同意 - 对于名称空间非常重要,对吗?该死的东西花了我几个小时。哦,呃...至少它解决了,我知道为什么。

Thx答案和thx马特他的答复呢!