Gcc 如何对Linux内核进行去优化以避免值优化

Gcc 如何对Linux内核进行去优化以避免值优化,gcc,linux-kernel,gdb,Gcc,Linux Kernel,Gdb,我正在调试Linux内核 我使用-O1优化级别编译内核。(请注意,Linux内核不能用-O0编译)。 当使用gdb调试它时,我发现一些值被优化了。如下图所示。len、flags和add_len参数都已优化。 如何对Linux内核进行去优化以避免优化这些变量 使用-Og建筑应该可以消除这些问题 我不知道Linux内核是否可以这样编译 请注意,通常可以通过向上或向下移动堆栈来发现“优化输出”值,例如,如果调用方看起来像这样: udp_recvmsg(sk, foo->msg, foo->

我正在调试Linux内核

我使用-O1优化级别编译内核。(请注意,Linux内核不能用-O0编译)。
当使用gdb调试它时,我发现一些值被优化了。如下图所示。len、flags和add_len参数都已优化。
如何对Linux内核进行去优化以避免优化这些变量


使用
-Og
建筑应该可以消除这些问题

我不知道Linux内核是否可以这样编译

请注意,通常可以通过向上或向下移动堆栈来发现“优化输出”值,例如,如果调用方看起来像这样:

udp_recvmsg(sk, foo->msg, foo->msglen, ...);

然后查看来电者中的
*foo
将告诉您
len
,尽管它在
udp\u recvmsg
本身中进行了优化。

非常感谢您的回复。我使用-Og优化级别。但这些变量仍在优化中。我尝试使用“volatile”来声明这些变量,然后它们就不会被优化了。