3

我有一个我正在使用的库(这对我的工作至关重要),我怀疑它可能有错误。不幸的是,图书馆的所有者对尝试我的示例代码反应迟钝。我将尝试自己调试它。

老实说,它不仅仅是一个库,它是一个库加上一组内核模块,并且崩溃发生在内核级别(非常讨厌),而且对于代码的所有者来说确实也很难发现。

有时我很幸运,我得到一个内核 oops,如果我可以使用 -g 选项构建他的代码,我可以找到发生错误的行(这很有帮助,因为我刚刚开始面对他的大量代码几乎没有线索)。

现在项目的 GNUmakefiles 是用 automake 构建的(我相信)。我的问题是如何告诉我make要添加-gCFLAGS整个构建中?

我记得读过一些关于如何编写 Makefile 以便可以添加“外部”选项等的内容,但我不知道这些 makefile 是否会以这种能力生成(应该是因为它是 automake),或者这些外部选项是如何生成的反正给了!

我猜是这样的:

make CFLAGS=-g

应该这样做,但老实说不知道。


编辑:请注意,我实际上对-g构建内核模块时要包含的标志感兴趣。我不能使用尝试和错误(例如使用上面的命令)来查看是否有效,因为内核构建只是打印[CC] ...而不显示任何选项!

编辑:实际上我确实尝试过,但gdb ./module.ko仍然声称没有调试符号。

4

1 回答 1

1

configure剧本吗?如果是这样,它是由 autoconf 创建的吗?(可能。)然后你可以做

./configure CFLAGS='-g -O0'
make clean
make

在调试和优化关闭的情况下重建整个事情。

否则,除非您提供 makefile 的相关摘录,否则没有人可以真正帮助您。

于 2012-04-17T22:23:29.027 回答