我是GDB的初学者,我让它正常工作。但是,我想知道如何在大型项目中使用它。我有一个使用makefile和g ++完成构建的项目。为了使GDB正常工作,我们需要使用右侧的调试符号进行编译(g ++ -g文件)?
问题
有什么想法吗?
答案 0 :(得分:2)
不需要,虽然您可能想要考虑始终使用-g进行构建(有时,您甚至可能需要尝试调试优化的(-O1,-O2等)代码;为什么不留下-g?对于发行版,您始终可以在二进制文件上运行strip。
是。使用-g构建该文件。
答案 1 :(得分:2)
在我工作的大型项目中,我们总是使用最详细的调试信息构建(例如,'-ggdb3'表示本机gdb格式,或'-gdwarf-2 -g3'表示访问gdb中的宏)。
当我们完成调试时,我们只需使用'strip'命令从二进制文件中删除所有调试信息。
gcc -ggdb3 blah.c -o blah
strip blah
答案 2 :(得分:1)
我认为在大型,中型或小型项目中使用gdb之间没有太大区别。但是,对于大型项目,您必须考虑构建所需的空间量,因为调试信息会增加对象和可执行文件的大小。
答案 3 :(得分:0)
gdb可以在没有符号的情况下工作;只是输出的效果要小得多。
答案 4 :(得分:0)
您可以随时将调试版本保存在某处,如果您需要重新绑定符号信息,在调试剥离/发布版本之后,您可以转到“文件/路径”并重新读取gdb该目标的符号。您还可以使用“symbol-file / path”配置要绑定到剥离文件的符号信息。