2012-07-05 24 views

回答

2

最有可能或a)所有調試信息被剝離在某些時候內核模塊的目標文件的生成過程中,或b)即使調試信息是存在的,objdump無法找到源代碼文件,在這種情況下,您可能會嘗試使用cd來源文件在運行objdump之前的位置。

+0

我已經檢查了我的Makefile模塊內部,有沒有定義優化標誌。我在makefile中添加了-g選項。不確定每個內核模塊的鏈接器文件以及在哪裏可以找到它,因爲我沒有定義任何特定於我的模塊的鏈接器文件。看起來像a)似乎是爲什麼C文件沒有上市,但不知道如何在Linux內核模塊構建中啓用它?任何幫助。 – lxusr 2012-07-06 06:48:55

+0

謝謝。我可以在Kernel Makefile中啓用-g選項,然後在objdump中獲取C源代碼列表。 – lxusr 2012-07-06 07:24:17

+0

通常你不應該在Linux內核中觸摸Makefiles。 'make CONFIG_DEBUG_INFO = y'應該有幫助。 – 0andriy 2015-07-23 16:04:15

2

您需要用調試信息在轉儲輸出交錯源代碼編譯的內核模塊。重新編譯你的內核模塊-g -ggdbCFLAGS

+0

這是什麼'-gdb'選項? – 2016-04-11 19:35:04

+0

@Clément這是一個錯字,它是'-ggdb',回答編輯。對於'-ggdb'選項的文檔https://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html – ouah 2016-04-12 16:22:21

+0

感謝您的更新;我把我的downvote變成了upvote :) – 2016-04-13 13:51:40