MK.*_*MK. 26 debugging build debug-symbols visual-studio
我很想在我的发布版本中包含调试信息,这些信息可以发送给客户.据我所知,唯一的缺点是二进制文件大小增加了25%.优点是我可以获得一个可立即使用的崩溃转储,更容易分析.我愿意忍受25%的增长.我还缺少其他任何缺点吗?
这是一个C项目,我想要做的就是链接/调试/生成调试信息
Mic*_*urr 37
可执行文件的大小应该增加远低于25%.
我实际上有点惊讶它会增加很多,但是一些快速测试表明,至少有一个大型示例项目(ScummVM)将.exe从10,205,184字节增加到10,996,224字节,只需/DEBUG在链接步骤中添加选项(关于增加8%). /DEBUG使用"Linker | Debugging | Generate Debug Info"IDE中的选项指定.请注意,此设置不应对编译器生成的优化产生任何影响.
我知道指向.pdb文件的指针放在可执行文件中,但对此并不多.我进行了一些实验,发现启用/OPT:REF链接器选项将大小差异更改为10,205,184与10,205,696.所以非/DEBUG构建保持相同的大小,但/DEBUG构建下降到只有512字节更大(这可以通过指向.pdb的指针来解释 - 也许链接器会轮到512或其他的某个倍数).增幅不到1%.显然,添加/DEBUG会导致链接器保留未引用的对象,除非您还指定/OPT:REF.("Linker | Optimization | References"IDE中的选项).
程序将在没有.pdb文件的情况下正常运行 - 如果您想在客户站点提供更好的调试体验,您可以选择将其发送给客户.如果您只是希望能够获得合适的堆栈跟踪,则不需要在客户机器上安装.pdb文件 - 它们(或您提供的某些工具/功能)可以发送转储文件,该文件可以加载到在您的站点上使用.pdb文件的调试器,并获得相同的堆栈跟踪信息port-mortem.
当然要注意的一件事是,您需要将.pdb文件与您的版本一起存档."Windows调试工具"软件包(现在分发在Windows SDK中)提供了一个符号服务器工具,因此您可以存档.pdbs并轻松检索它们以进行调试.
我可以想到分发.pdb文件的唯一缺点是它可以使您的应用程序的逆向工程更容易,如果这是您的问题.请注意,Microsoft为Windows分发符号(使用公共符号服务器 - 以及某些特定版本的完整符号集的包).但是,他们分发的符号确实会通过清理步骤来删除他们认为敏感的某些项目.您可以使用链接器/PDBSTRIPPED选项("Linker | Debugging | Strip Private Symbols" 在IDE中)执行相同(或类似)操作.有关该选项删除的详细信息,请参阅MSDN文档.如果您要分发符号,则可能适合使用该选项.
| 归档时间: |
|
| 查看次数: |
15659 次 |
| 最近记录: |