如何调试用'make'编译的程序?

时间:2011-10-06 00:48:18

标签: linux debugging gcc gdb makefile

gdb教程建议用'gcc -g'编译,用编译符号编译程序。

但是,我想调试用make编译的程序。如何指示make使用调试符号进行编译?

感谢。

2 个答案:

答案 0 :(得分:7)

为了更改编译选项,您需要在运行'make'的目录中编辑文件'Makefile'。在该文件中查找以下内容之一:

  1. 定义编译器的变量,可能类似于:

    CC = 'GCC'

  2. 调用编译器的实际行(更可能是手工制作的Makefile)。

  3. 变量名为CFLAGS或CXXFLAGS

  4. 在前两种情况下,只需在'gcc'之后添加'-ggdb',在第三种情况下,更容易添加'-ggdb',如:

    CFLAGS='-ggdb'
    

答案 1 :(得分:3)

我必须处理的makefile(由其他人创建)经常不容易将选项更改为编译器。简单地在命令行上设置CFLAGS很容易,但是很多其他重要的编译选项。但是,您通常可以通过覆盖make命令行上的编译器宏来处理问题:

make CC="gcc -g" ...other arguments...

您需要确保使用调试标志编译您对调试感兴趣的所有内容。您可以使用make cleanupmake clean清除碎片,也可以采用更简单的措施(rm *.o *.a *.so或其等效物)。或者,如果你有GNU Make,那么使用-B--always-make强制它重建所有内容。

如果您有多目录构建,则需要在所有相关目录中执行此操作。