debugging信息无法find或与Visual Studio不匹配

我复制了一个现有的项目,并重命名文件夹。 现在,当我尝试编译应用程序时,出现此错误

debugging information cannot be found or does not match. No symbols loaded. Do you want to continue debugging ? 

如果我点击是,它编译和运行良好。 但现在我必须处理这个信息。 只要好奇我在项目属性中更改以使其停止。

主要原因是你没有匹配的PDB和EXE。

可能的解决scheme

  • 您正在编译而不是debugging版本
  • 你需要清理/build立或重build
  • 您没有在exe文件所在的目录中生成您的pdb文件
  • 你有一个不匹配的PDB,也许复制的来源是比今天的date更新,并没有正确的build设。
  • 尝试清除所有debugging对象文件
  • 您附加到从build exe和pdb所在的不同位置开始的进程
  • 重新启动Visual Studio

您可能已经停用了您的项目的debugging信息:

  • 右键单击你的项目 – >属性
  • configuration属性 – >链接器 – >debugging
  • 将“生成debugging信息”从“否”切换到“是”

重build你的项目并重试,现在应该运行没有消息:)

这种情况发生在我身上,在debugging代码和进行更改时,似乎visual studio会cachingpdb信息,有时会卡住。 做一个重build解决scheme,删除pdb和创build一个新的不解决问题。

当然,我确实需要生成debugging信息以及所需的所有信息,特别是在debugging代码几次的时候。

Visual Studio似乎对内存中的pdb感到满意,并拒绝更新它,而不考虑pdb中的时间戳或更改大小。

重置此唯一方法是退出Visual Studio(IDE)并重新启动它。

在极less数情况下,IDE可能仍然在后台运行(进程资源pipe理器在那里显示它),并可能保持打开文件的句柄。 您可以在重新启动IDE之前终止进程。

祝你好运

我刚在VS2012遇到这个错误。 这绝对是由Visual Studio中的一个错误引起的,当主项目的本地PDB文件与整个可执行文件的最终PDB文件具有相同的名称时(即使这两个文件位于不同的目录中!

考虑这个例子。

解决scheme由三个项目组成: mainabmain是可执行文件的顶层项目,而ab是链接到main库。

在所有三个项目中, $(IntDir)variables被设置为$(SolutionDir)\$(Configuration)\$(ProjectName)\ 。 这意味着项目main将其中间文件转储到Debug\main\ ,项目aDebug\a\等等。

C/C++ -> Output Files设置中,所有三个项目都将Program Database File Name值设置为$(IntDir)$(TargetName).pdb 。 这意味着项目main生成其本地PDB文件为Debug\main\main.pdb ,项目bDebug\b\b.pdb等等。

最后,在Linker -> Debugging settings of project mainGenerate Program Database File值被设置为$(OutDir)$(TargetName).pdb 。 这意味着整个可执行文件的全局PDB文件将被生成为Debug\main.pdb

请注意,在此设置中,每个PDB文件都在其自己的独立目录中生成。

在此设置中,您将得到debugging信息找不到或不匹配错误,如果您尝试在debugging器下运行该程序。 如果您看一下Debug\main.pdb文件(它将存在),您会注意到它与Debug\main\main.pdb文件Debug\main\main.pdb ! 即不知何故本地PDB为main覆盖什么应该是最终的可执行文件的全球PDB。 即debugging器是正确的抱怨PDB文件是“错误的”。 这确实是错的。

再次,在上面的设置中,最终的全局PDB以某种方式被顶层项目的本地PDB覆盖。 我不知道为什么会发生。 这似乎是一个错误。 (请注意,尽pipe这些PDB文件具有相同的名称,但它们是在不同的目录中生成的,即它们不应该发生冲突。)

解决此问题的解决方法是为项目main的本地PDB提供一个不同的名称。 例如,只要进入C/C++ -> Output Files main项目和更改Program Database File Name$(IntDir)$(TargetName)_local.pdb (或$(IntDir)12345.pdb如果你想)。 这将消除冲突并解决问题。

我面临同样的问题,并尝试所有上述解决scheme,但它不能帮助我。 然后,我随机发现了一个新的解决scheme,它工作。

解决的办法是,如果你在一个解决scheme中有很多项目,那么你应该把任何一个(你必须决定的项目)标记为“设置为启动项目”。 右键单击该特定项目,然后单击“设置为启动项目”。

它为我工作。

pdb或程序数据库文件似乎丢失(基本上,path已经改变,不能再被编译器find)。 看到这个相关的职位了解更多信息。

我有一个类似的问题,原因是我在不同的过程中运行了我的解决scheme中的一个项目,并且这个过程不能被杀死。 我没有想太多。 所以当我在一个单独的环境中构build解决scheme时,其中一个pdb文件不匹配,所以最后我无法加载任何pdb文件。 我刚刚重新启动我的电脑,并修复它。

祝你好运

重新启动Visual Studio可以修复此问题的一个实例。

在解决scheme浏览器中右键单击您的项目=> Clean => Build。 也就是说,如果你的版本生成了一个.pdb(看你的目标目录)如果没有,你应该启用其他post中提到的步骤debugging

最有可能还有其他原因,如.pdb / .exe文件不匹配,一些没有build立/重build,但我有类似的情况下在Visual Studio 2013 –

与虚拟内联函数有关 – 所以我怀疑。

在我的情况下,debugging器跳到了另一个C ++函数的中间,而不是被调用的函数。 跳转是源代码11源代码行,但我不能解释为什么很多错误发生。 通过简单的重新排列function,我摆脱了这个问题。

本来可能需要更详细的分析为什么发生了11行转移。

在其他任何视觉工作室中都没有见过这种行为。

这个问题困扰了我很长一段时间。 AnT的anwser是非常有帮助的。 主要思想是没有任何两个pdb文件具有相同的名称 ,即使它们不在同一个目录中。

这是我的情况:我有两个项目名称“FooBar”和“FooBarDll”,第一个是exe,第二个是dll。 我将两个项目Target Name设置为“FooBar”,以便它们分别生成“FooBar.exe”和“FooBar.dll”。

然后我设定

  1. “General – > Intermediate Directory”为“$(OutDir)\ $(ProjectName)\”
  2. “C / C ++ – >输出文件 – >程序数据库文件名”为“$(IntDir)$(TargetName).pdb”
  3. “链接器 – >debugging – >生成程序数据库文件”为“$(OutDir)$(TargetName).pdb”

所以我得到这些文件:

  1. debugging\ FooBar.exe
  2. Debug \ FooBar.pdb // C ++ pdb
  3. Debug \ FooBar \ FooBar.pdb // Linker pdb

  4. debugging\ FooBar.dll

  5. Debug \ FooBar.pdb // C ++ pdb
  6. debugging\ FooBarDll \ FooBar.pdb //链接器pdb

我的解决scheme是用“ProjectName”replace每个“TargetName”,然后我会得到:

  1. debugging\ FooBar.exe
  2. Debug \ FooBar.pdb // C ++ pdb
  3. Debug \ FooBar \ FooBar.pdb // Linker pdb

  4. debugging\ FooBar.dll

  5. Debug \ FooBarDll.pdb // C ++ pdb
  6. debugging\ FooBarDll \ FooBarDll.pdb //链接器pdb

那就没有冲突了!

给C / C ++ pdb一个后缀可能会更好,如:“C / C ++ – >输出文件 – >程序数据库文件名”为“$(IntDir)$(ProjectName)_C.pdb”

我有同样的问题,这个链接帮助我解决了这个问题,在VS IDE文件夹中将“symsrv.no”重命名为“symsrv.yes”。

启用PDB创build:

右键单击MyProject > Properties > Debugging

  • C/C++ > General > Debug Information Output = Program Database (/Zi)
  • Linker > Debugging > Generate Debug Info = Yes (/DEBUG)

清理MyProject,重新启动Visual Studio(只是肯定),重buildMyProject。 输出文件夹应包含* .pdb文件。

如果您debugging优化/发布代码考虑通过closures优化

  • C++ > Optimization > Optmization = Disabled (/Od)

好奇的是,我碰巧需要更改文件夹名称:

 ...\Custom Librarry (MyDll.dll( 

 ...\Custom Librarry (MyDll.dll) 

只是通过closures它的工作!