【问题标题】:How to debug a program compiled with 'make'?如何调试使用“make”编译的程序?
【发布时间】:2011-12-01 22:18:45
【问题描述】:

gdb 教程建议使用 'gcc -g' 来编译带有调试符号的程序。

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

谢谢。

【问题讨论】:

    标签: linux debugging gcc gdb makefile


    【解决方案1】:

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

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

      CC='gcc'

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

    3. 称为 CFLAGS 或 CXXFLAGS 的变量

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

    CFLAGS='-ggdb'
    

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-27
        • 1970-01-01
        • 2021-11-23
        • 1970-01-01
        • 2014-02-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多