Delphi 在启用调试信息的情况下,无法在版本配置中调试64位应用程序

Delphi 在启用调试信息的情况下,无法在版本配置中调试64位应用程序,delphi,64-bit,delphi-xe6,Delphi,64 Bit,Delphi Xe6,我正在尝试调试处于发布配置(64位Windows平台)中的应用程序,但不会遇到断点 我已启用编译器调试信息选项: 当应用程序处于32位发布配置时,我可以调试它;断点工作正常 | Configuration | 32-bit | 64-bit | |---------------|------------|------------| | Debug | Debuggable | Debuggable | | Release | Debuggable |

我正在尝试调试处于发布配置(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位dubugger无效
  • 为什么64位调试器能够在debug配置中调试应用程序,而不能在Release配置中调试应用程序
  • 版本配置中,我需要更改哪些选项以调试64位应用程序
奖金截图 32位释放链接器选项:

64位释放链接器选项:


我认为您需要在链接器选项中启用调试信息。至少,当我禁用该设置时,不会命中断点,而当我启用该设置时,会命中断点

总之,通过使用受信任的试错技术,我可以看出,您需要以下几点来启用调试:

  • 32位:已启用编译器调试信息
  • 64位:已启用编译器和链接器调试信息

我有一个项目链接到我自己的6个软件包,并已迁移到64位。在win32中,所有调试都正常,但不会在win32中的断点处停止

我发现dcp文件的路径在project\search路径中是必需的,并且它不能是相对的
它可以很好地处理C:\dcp$(平台)$(配置)等变量,但不能处理..\dcp$(平台)$(配置)

我认为问题在于win32调试是在“内部”进行的,但由于ide不是64位调试,因此必须在外部进行调试(因为必须为64位启用远程调试),并且远程调试器的起始目录不相同,因此相对路径将是相对于其他位置的

我还启用了映射文件,但不认为这有什么区别,因为使用相对路径没有任何效果


很抱歉回答了一个很老的问题,但在疯狂了一整天之后,我不得不告诉别人,而且我确信我将来会在谷歌上找到这个答案,因为我是相对路径的粉丝。

这应该是可行的(我在我的项目中这样做),但64位调试器有点古怪。“你试过一个普通的项目吗?”大卫·费弗南提出了一个很好的建议;我没有尝试过新的项目。仍然失败。所以这应该归功于Embarcadero对质量的承诺?IDE和禁用调试的调试器之间存在某种秘密通信,这真的很奇怪。@Jerrydoge试错是最好的错误!令人困惑的是,它起作用了。谢谢事实上,我收回了。这是一个32位版本,它(仍然)在启用链接器调试信息的情况下工作。但我认为我们只会说“这是产品中的另一个bug”——不要尝试在Delphi中开发64位应用程序*唉,我不明白你的话,对不起