【发布时间】:2014-04-25 18:05:37
【问题描述】:
是否有任何方法可以检测编译器何时启用了预处理器的调试符号? (使用 cl.exe 时)
(背景:由于工具链 .pdb 大小限制,我们的编译将失败,所以我想早点 #error 而不是在长时间构建后编译/链接失败。)
【问题讨论】:
-
为什么您的工具链会关心外部 PDB 文件的大小?这难道不是您应该寻求解决的更严重的问题吗?我的意思是,如果您没有可用的符号,您将如何有效地调试您的应用程序?
-
PDB > 1G时VS工具链失效。是的,这是一个严重而复杂的问题。我只是希望在漫长的构建中更早地进行诊断。
-
有趣,我以前没有遇到过这个限制。那么,是时候将代码拆分成一些 DLL 了吗?特别是因为我认为您的问题没有答案。它可能会帮助您处理您肯定会遇到的荒谬链接时间。我还发现了这个可能的解决方法:LNK1201 Visual C++ 2010 Large project failing to generate PDB。这应该为您的 PDB 文件提供总共 2 GB 的空间,这应该可以让您完成这些 DLL。
-
再次感谢。这就是我们在 VS2010 下所做的(我在 codereview.chromium.org/11968015 中为 Chromium 实现了该 hack,chrisha 的概括,SO 帖子所基于的!)。但遗憾的是,它导致 mspdbsrv 在 VS2013 上非常不稳定(经常崩溃)。当然,我为这些提交了连接错误,但是......不是快速周转。
标签: c++ windows c-preprocessor debug-symbols