【问题标题】:What does -g do when you're creating a makefile in c?在 c 中创建 makefile 时 -g 会做什么?
【发布时间】:2018-01-03 00:36:50
【问题描述】:

我正在查看一个 makefile,我知道 -o,-c 的作用,但 -g 的作用和含义。

【问题讨论】:

  • 你说的是 GCC 吗?
  • 为什么要使用 C 来创建 makefile?

标签: makefile


【解决方案1】:

这与制造无关。您应该查看编译器的文档。例如,GCC 的选项是summarized here。如果你在那里搜索,你会发现-g 是一个调试选项described here

如果您使用不同的编译器,您应该查看该编译器的文档(但是,绝大多数 C 编译器使用相同的基本选项,因此您的可能相同)。

【讨论】:

    【解决方案2】:

    通常 C 编译器中的 -g 选项会将调试信息添加到可执行文件中,因此您可以使用

    调试可执行文件

    gdb

    。有关调试 C 程序的更多详细信息,请参阅How to debug a C program

    【讨论】:

      【解决方案3】:

      -g 强制 gcc 将调试信息添加到已编译的代码中,这使您可以更轻松地使用 gdb 对其进行调试。

      除非您或使用您的代码的其他人将使用 gdb,否则没有理由包含该标志。

      来自 gcc 手册页:

      在大多数使用 stabs 格式的系统上,-g 允许使用只有 GDB 才能使用的额外调试信息;这些额外的信息使 GDB 中的调试工作更好,但可能会使其他调试器崩溃或拒绝读取程序。

      https://linux.die.net/man/1/gcc

      【讨论】:

      • 你以前用过valgrind吗?
      • 在寻找内存泄漏时一次或两次。 tbh 我完全不知道这个标志直到现在才存在。可能会让我的生活更轻松......
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-06
      相关资源
      最近更新 更多