无法在发布配置中调试 64 位应用程序,启用了调试信息
Posted
技术标签:
【中文标题】无法在发布配置中调试 64 位应用程序,启用了调试信息【英文标题】:Unable to debug 64-bit application in release configuration, with Debug information enabled 【发布时间】:2015-07-22 04:30:25 【问题描述】:我正在尝试调试 发布配置 - 64 位 Windows 平台 中的应用程序,但不会遇到断点。
我已启用编译器调试信息选项:
我可以在应用程序处于32 位 版本配置时对其进行调试;断点工作正常。
| Configuration | 32-bit | 64-bit |
|---------------|------------|------------|
| Debug | Debuggable | Debuggable |
| Release | Debuggable | Fails |
All with "Debug information" set to "Debug information",
and full build (Shift+F9) before running.
所以三个问题:
为什么设置调试信息适用于 32 位调试器,但不适用于 64 位调试器? 为什么 64 位调试器能够在 Debug 配置中调试应用程序,但不能在 Release 配置中调试应用程序? 我要更改哪个选项才能在 Release 配置中调试 64 位应用程序?奖励截图
32 位发布链接器选项:
64 位版本链接器选项:
【问题讨论】:
这应该可以工作(我在我的项目中这样做)但是 64 位调试器有点不稳定。您是否尝试过香草项目? @DavidHeffernan 好建议;我没有尝试过一个新的项目。仍然失败。所以应该把它归结为 Embarcadero 对质量的承诺? IDE 和禁用调试的调试器之间存在一些秘密通信,这真的很奇怪。 @JerryDodge You are going to pay for bug fixes. And you’re going to like it! 【参考方案1】:我认为您需要在链接器选项中启用调试信息。至少,当我禁用它时,断点不会被命中,而当我启用该设置时,断点会被命中。
总之,据我所知,使用可靠的反复试验技术,您需要以下内容才能启用调试:
32 位:启用编译器调试信息。 64 位:编译器和链接器调试信息已启用。【讨论】:
试错是最好的错误!令人困惑的是,它有效。谢谢! 其实我收回了。它是 32 位版本,(仍然)在启用链接器调试信息的情况下工作。但我认为我们会简单地说“这是产品中的另一个错误” - 不要尝试在 Delphi 中开发 64 位应用程序。 *叹气* 我不明白那个评论,抱歉【参考方案2】:我有一个项目链接到我自己的 6 个包并已迁移到 64 位。在 win32 中所有调试都很好,但在 win64 中不会在断点处停止。
我发现 dcp 文件的路径在 project\search 路径中是必需的,而且它不能是 RELATIVE! 它适用于诸如 C:\dcp$(Platform)$(Config) 之类的变量,但不适用于 ..\Dcp$(Platform)$(Config)
我认为问题是 win32 调试发生在“内部”,但由于 ide 不是 64 位调试必须在外部进行(因为必须为 64 位启用远程调试),因此远程调试器的起始目录不一样相对路径将相对于其他位置。
我也启用了地图文件,但不认为这有什么不同,因为相对路径没有任何作用。
很抱歉回答了一个非常老的问题,但是在疯了一整天之后,我只需要告诉某人,并且我确信将来当我忘记时,我将不得不在谷歌上搜索这个答案,因为我是相对路径的粉丝。
【讨论】:
以上是关于无法在发布配置中调试 64 位应用程序,启用了调试信息的主要内容,如果未能解决你的问题,请参考以下文章