【问题标题】:Unable to debug 64-bit application in release configuration, with Debug information enabled无法在发布配置中调试 64 位应用程序,启用了调试信息
【发布时间】: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 和禁用调试的调试器之间存在一些秘密通信,这真的很奇怪。

标签: delphi 64-bit delphi-xe6


【解决方案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 位启用远程调试),因此远程调试器的起始目录不一样相对路径将相对于其他位置。

我也启用了地图文件,但不认为这有什么不同,因为相对路径没有任何作用。

很抱歉回答了一个非常老的问题,但是在疯了一整天之后,我只需要告诉某人,并且我确信将来当我忘记时,我将不得不在谷歌上搜索这个答案,因为我是相对路径的粉丝。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-10
    • 2011-12-25
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 1970-01-01
    相关资源
    最近更新 更多