Jam*_*lis 24
使用Windows上的Visual C++(和其他Microsoft编译器),符号不是二进制文件的一部分.相反,它们存储在称为"程序数据库"文件(.pdb文件)的单独文件中.只是不提供.pdb文件.
使用GNU工具链,您将使用strip从二进制文件中删除符号.
Dam*_*mon 18
对于GNU工具链,存在一个很酷的手法:
objcopy --only-keep-debug yourprogram ../somepath/yourprogram.dbg
strip yourprogram
objcopy --add-gnu-debuglink=../somepath/yourprogram.dbg yourprogram
Run Code Online (Sandbox Code Playgroud)
现在您可以压缩程序所在的文件夹(或将其打包到安装程序或其他任何程序),其中不再有调试符号.
但是:如果您启动调试器或运行类似addr2line或obdump的工具,该工具将(由于调试链接信息)自动知道在哪里找到符号并加载它们.
哪个很棒,因为这意味着你可以在你的头上使用符号,而不必将它们分发给用户.