我正在调试Linux内核。
我使用-O1优化级别编译内核。 (注意,Linux内核不能用-O0编译)
当使用gdb进行调试时,我发现一些值已经过优化。如下图所示。 len ,标志和 add_len 参数都已优化出来。
如何对Linux内核进行去优化以避免将这些变量优化出来?
答案 0 :(得分:1)
使用-Og
构建可以消除这些问题。
我不知道Linux内核是否可以这样编译。
请注意,通常您可以发现"优化的"通过向上或向下堆栈来获得价值,例如如果来电者看起来像这样:
udp_recvmsg(sk, foo->msg, foo->msglen, ...);
然后查看来电者*foo
会告诉您len
,尽管它已在udp_recvmsg
本身进行了优化。