删除编译器优化并在发行版中启用 pdb 文件
Posted
技术标签:
【中文标题】删除编译器优化并在发行版中启用 pdb 文件【英文标题】:Remove compiler optimizations and enable pdb files in release 【发布时间】:2018-06-15 20:06:54 【问题描述】:我有一个 qt pro 文件,我想在其中禁用优化,因为我看到一些不合理的崩溃。因此我使用选项:
QMAKE_CXXFLAGS -= -O1
QMAKE_CXXFLAGS -= -O2
QMAKE_CXXFLAGS -= -O
更重要的是,我需要生成 pdb 文件,同时在发布模式下构建,以跟踪任何暗恋的后记。因此,我在我的专业文件中使用以下选项:
CONFIG += force_debug_info
但是,我在编译期间看到由于第二个选项,编译器添加了 O2 优化。您知道为什么会发生这种情况以及我如何同时拥有这两种功能吗?
【问题讨论】:
从发布构建中删除优化并添加调试信息后,它与普通调试构建有什么区别? 您能否显示一个行为不端程序的minimal reproducible example?那么我们也许能够发现你的错误。 您不需要禁用优化来生成调试信息(实际上禁用它们可能会让错误消失)。只需使用-g3
@HolyBlackCat 带有调试信息的发布版本将为我提供一个发布可执行文件,我可以将其安装在我们的客户端 PC 上,并在创建新转储文件后给我 pdb 文件以加载碰撞。正常的调试需要依赖调试 dll,这些依赖只能在开发环境中找到。
@VTT:当然没有必要禁用编译器优化来生成调试信息,我只需要这样做,因为我有几次崩溃,选项启用了选项
【参考方案1】:
似乎在使用调试信息构建时,pro文件中要更新的qmake标志是:
QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO
因此,我应该写:
QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO -= -O1
QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO -= -O2
QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO -= -O
【讨论】:
以上是关于删除编译器优化并在发行版中启用 pdb 文件的主要内容,如果未能解决你的问题,请参考以下文章
Mono 发行版中的 C# 编译器版本是不是与 Mono 版本相同?
Maven项目提示:源值1.5已经过时,将在未来发行版中删除
在 VS2013 中编译 ASP.NET MVC 项目在发行版中不起作用