2017-04-11 103 views
2

我正在調試Linux內核。如何優化Linux內核以避免優化值

我用-O1優化級別編譯內核。 (請注意,Linux內核不能用-O0編譯)。
當使用gdb進行調試時,我發現一些值被優化了。如下圖所示。 len,標誌add_len參數全部優化出來。
如何優化Linux內核以避免優化這些變量?

enter image description

回答

1

樓內有-Og應該消除這些問題。

我不知道Linux內核是否可以這種方式進行編譯。

請注意,通常您可以通過上下堆疊來發現「優化出」值,例如,如果主叫方是這樣的:

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

然後在調用者看着*foo會告訴你len儘管它在udp_recvmsg本身被優化掉了。

+1

非常感謝您的回覆。 我使用-Og優化級別。但是這些變量仍然被優化。 我嘗試用「volatile」來聲明這些變量,然後它們沒有被優化出來。 –