从长远来看,使用调试器和大量使用C++模板是不兼容的吗?

Gus*_*avo 6 c++ debugging templates gdb g++

我正在开发一个使用很多模板和库的项目,比如boost :: fusion,发现自己正在努力使用一个可执行文件,截至今天,它是600MB而gdb需要1.7 GB的内存来加载它,还有一个符号查找会使它使用近3GBs.剥离的二进制文件约为5 MB.

问题是,为了生成更小的调试符号,还有什么要做的吗?这不仅是gdb的问题,也是链接器的问题,链接器在链接使用-g标志编译的对象时使用另一个1.2 GB的RAM

我试过-g1 -g2和-g3,问题依然存在.

qeh*_*hgt 1

作为部分解决方案,您可以使用-g选项仅编译几个源文件。或者strip对还不需要调试的 .o 文件使用实用程序。

如果问题只是可执行文件大小,您可以使用此方法使其更小,而不会丢失调试信息。