我有一个我正在使用的库(这对我的工作至关重要),我怀疑可能有一个错误。不幸的是,图书馆的所有者对尝试我的示例代码没有那么敏感。我即将尝试自己调试。
更诚实的是,它不仅仅是一个库,它是一个库加上一组内核模块,崩溃发生在内核级别(非常讨厌),实际上很难找到代码的所有者。< / p>
有时候我很幸运,我得到了一个内核oops,如果我可以使用-g选项构建他的代码,我可以找到错误发生的那一行(这非常有帮助,因为我刚开始面对他的大量几乎没有任何线索的代码。
现在项目的GNUmakefiles是用automake构建的(我相信)。我的问题是如何通过WHOLE构建告诉make
将-g
添加到CFLAGS
?
我记得读过如何编写Makefile的内容,以便可以添加“外部”选项等等,但我不知道这些makefile是否会以这种能力生成(这应该是因为它是自动化的),或者那些无论如何都会给出外部选项!
我猜是这样的:
make CFLAGS=-g
应该这样做,但老实说不知道。
编辑:请注意,我实际上对构建内核模块时要包含的-g
标志感兴趣。我不能使用try和error(例如上面的命令)来查看是否有效,因为内核构建只打印[CC] ...
而没有显示任何选项!
编辑:其实我确实尝试过,但gdb ./module.ko
仍声称没有调试符号。
答案 0 :(得分:1)
是否有configure
脚本?如果是这样,它是由autoconf创建的吗? (可能。)然后你可以做到
./configure CFLAGS='-g -O0'
make clean
make
通过调试和优化来重建整个事物。
否则,除非您提供相关的makefile摘录,否则没有人可以真正帮助您。