在启用调试信息的情况下,无法在发布配置中调试 64 位应用程序
Unable to debug 64-bit application in release configuration, with Debug information enabled
我正在尝试调试 发布配置 - 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 位版本链接器选项:
我认为您需要在链接器选项中启用调试信息。至少,当我禁用它时,断点不会命中,而当我启用该设置时,断点会命中。
总而言之,据我所知,通过使用可靠的反复试验技术,您需要满足以下条件才能启用调试:
- 32 位:启用编译器调试信息。
- 64 位:启用编译器和链接器调试信息。
我有一个链接到我自己的 6 个包的项目,并且已经转移到 64 位。所有调试在 win32 中都很好,但在 win64 中不会在断点处停止。
我发现 project\search 路径中需要 dcp 文件的路径,而且它不能是相对的!
它适用于变量,例如 C:\dcp$(Platform)$(Config) 但不适用于 ..\Dcp$(Platform)$(Config)
我认为问题是 win32 调试发生 'in house' 但由于 ide 不是 64 位调试必须发生 ide (因为必须为 64 位启用远程调试) 和远程调试器的起始目录不同,因此相对路径将相对于其他位置。
我也启用了地图文件,但我认为这没有什么不同,因为相对路径没有任何作用。
很抱歉回答了一个非常老的问题,但在发疯了一整天之后,我不得不告诉别人,并且我确信将来我将不得不 google 回答这个问题,因为我现在忘记了相对路径的粉丝。
我正在尝试调试 发布配置 - 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 位版本链接器选项:
我认为您需要在链接器选项中启用调试信息。至少,当我禁用它时,断点不会命中,而当我启用该设置时,断点会命中。
总而言之,据我所知,通过使用可靠的反复试验技术,您需要满足以下条件才能启用调试:
- 32 位:启用编译器调试信息。
- 64 位:启用编译器和链接器调试信息。
我有一个链接到我自己的 6 个包的项目,并且已经转移到 64 位。所有调试在 win32 中都很好,但在 win64 中不会在断点处停止。
我发现 project\search 路径中需要 dcp 文件的路径,而且它不能是相对的!
它适用于变量,例如 C:\dcp$(Platform)$(Config) 但不适用于 ..\Dcp$(Platform)$(Config)
我认为问题是 win32 调试发生 'in house' 但由于 ide 不是 64 位调试必须发生 ide (因为必须为 64 位启用远程调试) 和远程调试器的起始目录不同,因此相对路径将相对于其他位置。
我也启用了地图文件,但我认为这没有什么不同,因为相对路径没有任何作用。
很抱歉回答了一个非常老的问题,但在发疯了一整天之后,我不得不告诉别人,并且我确信将来我将不得不 google 回答这个问题,因为我现在忘记了相对路径的粉丝。