2017-01-31 47 views
0

我要設置kgdb調試Ubuntudebian內核。閱讀make-kpkg構建內核-O0的是kgdb

默認情況下,由make-kpkg編譯的內核已被優化(-O2),所以我無法調試變量。

有沒有辦法來禁用內核編譯優化(例如,-O0)?

謝謝!

目前,GDB報告變量進行了優化:

(gdb) p pb 
$5 = <optimized out> 
+0

用'-g3 -O0'或'-g3 -O1'可能會得到最好的調試結果。 '-g3'包含符號定義。我不知道內核在'-O0'上的性能如何。它可能會非常緩慢。你可以在'-g3 -O0'建立感興趣的模塊嗎? – jww

回答

1

Linux內核依賴於-02。它不會以較低的優化級別進行編譯。它使用了幾個GCC「技巧」,這些技巧只在某些優化開啓時才起作用,例如應該像宏一樣行事的內聯函數。