2011-05-17 54 views
1

我将应用程序从VC6移植到VS 2008中。我在发布版本中重建应用程序。 Pdb文件位于exe所在的文件夹中。但是,当我加载的应用程序,并把破发点,我收到以下消息断点不匹配

“断点将目前尚未被hit.No符号已加载这个文件”

会是什么原因问题?

+0

只需使用__asm int 13;从代码触发断点;-) – 2011-05-18 14:27:11

回答

0

PDB文件你提到的可能是不相关的发布版本,

调试信息的发布版本通常不存在(虽然你可以启用它,如果你有,但应该预见由于编译器优化意想不到的效果)。

因此,可以只设置在已知的DLL入口点断点(经由模块列表视图可能 - 因为我用Visual Studio中密集它已经有一段时间)或直接在组装说明。

请注意,您也许可以使用调试符号编译应用程序的一部分。

+0

在VC2008中,除非将其关闭,否则默认情况下会生成调试信息。 – 2011-05-17 10:56:51

+0

pdb文件是作为exe的一部分生成的,并且未启用编译器优化。我现在应该怎么做? – Maanu 2011-05-17 10:57:16

+1

@John Dibling:从VC 6.0移植的版本中未启用。所以我启用了它。 – Maanu 2011-05-17 10:58:45

1

调试器找不到应用程序或PDB。

当您启动该程序时,输出窗口中将显示正确加载哪些二进制文件。确保正在加载正确的文件。当一切正确加载,输出看起来是这样的:

'hacks_vs10.exe':加载 “C:\用户\约翰\文档\ Visual Studio的 2010 \项目\ hacks_vs10 \ 64 \调试\ hacks_vs10 .exe', 加载符号。

当未发现PDB,而不是说“加载符号”,它说:

无法找到或打开PDB文件

确保你第一次运行正确版本的应用程序(检查运行路径),然后确保PDB在该目录中。您可以通过调整“项目>属性...>链接器>生成程序数据库文件”来更改生成PDB的位置。

+0

我收到'HoTSim2.0.exe'消息:加载符号'D:\ Projects \ AsWorxSim \ Bin \ Release \ HoTSim2.0.exe'。仍然没有中断点 – Maanu 2011-05-17 11:23:19

1

调试器找不到与您放置断点的源位置关联的代码。

这可能有多种原因。我经常找到的是一段真正未编译的代码(无论是因为预处理器条件还是死代码删除)。

我想有可能是其他原因太(如内联,虽然在理论上,编译器可以生成所有的内联正确映射。我不知道是什么VS2008在这里所做的)。

你确定你把断点放在应该被执行的代码路径中吗?

+0

根据我的经验,调试器可以很好地处理内联。 – Puppy 2011-05-18 14:14:36

+0

@DeadMG:我很肯定我在过去的某些情况下遇到了问题。但一个简单的测试工作。感谢您的输入。 – Bahbar 2011-05-18 14:51:28

0

我刚刚解决了类似的问题

  • 我再次引用我的所有DLL的
  • 去(工具 - >选项,“项目和解决方案”,“生成和运行”),并设置“在项目过期时运行“到”提示构建“

我不确定这些问题中的哪一个解决了问题,但它确实!