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

And*_*der 6 linux debugging gcc gdb makefile

gdb的教程建议使用'gcc -g'进行编译,以使用调试符号编译程序.

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

谢谢.

小智 7

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

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

    CC = 'GCC'

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

  3. 变量称为CFLAGS或CXXFLAGS

在前两种情况下,只需在'gcc'之后添加'-ggdb',在第三种情况下,只需添加'-ggdb'即可:

CFLAGS='-ggdb'
Run Code Online (Sandbox Code Playgroud)


Jon*_*ler 5

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

make CC="gcc -g" ...other arguments...
Run Code Online (Sandbox Code Playgroud)

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

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