我想從我的內核模塊的一個調試崩潰;我正在嘗試獲取源代碼列表以及objdump的輸出,但未列出。有什麼我失蹤?objdump的-S不顯示Linux內核模塊的源代碼清單
mips-linux-objdump -S <filename.o> > temp
我想從我的內核模塊的一個調試崩潰;我正在嘗試獲取源代碼列表以及objdump的輸出,但未列出。有什麼我失蹤?objdump的-S不顯示Linux內核模塊的源代碼清單
mips-linux-objdump -S <filename.o> > temp
最有可能或a)所有調試信息被剝離在某些時候內核模塊的目標文件的生成過程中,或b)即使調試信息是存在的,objdump
無法找到源代碼文件,在這種情況下,您可能會嘗試使用cd
來源文件在運行objdump
之前的位置。
您需要用調試信息在轉儲輸出交錯源代碼編譯的內核模塊。重新編譯你的內核模塊-g -ggdb
CFLAGS
。
這是什麼'-gdb'選項? – 2016-04-11 19:35:04
@Clément這是一個錯字,它是'-ggdb',回答編輯。對於'-ggdb'選項的文檔https://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html – ouah 2016-04-12 16:22:21
感謝您的更新;我把我的downvote變成了upvote :) – 2016-04-13 13:51:40
我已經檢查了我的Makefile模塊內部,有沒有定義優化標誌。我在makefile中添加了-g選項。不確定每個內核模塊的鏈接器文件以及在哪裏可以找到它,因爲我沒有定義任何特定於我的模塊的鏈接器文件。看起來像a)似乎是爲什麼C文件沒有上市,但不知道如何在Linux內核模塊構建中啓用它?任何幫助。 – lxusr 2012-07-06 06:48:55
謝謝。我可以在Kernel Makefile中啓用-g選項,然後在objdump中獲取C源代碼列表。 – lxusr 2012-07-06 07:24:17
通常你不應該在Linux內核中觸摸Makefiles。 'make CONFIG_DEBUG_INFO = y'應該有幫助。 – 0andriy 2015-07-23 16:04:15