2012-07-17 49 views
2

我有一個x86開發機器和mips開發內核模塊。我想拆開一個例程來查找模塊的問題。使用GDB在x86機器上進行MIPS反彙編;可能?

所以我的問題是 「我可以在x86機器上反彙編它,還是我必須得到一個MIPS開發機器?」

我試過了,但它在x86指令集中反彙編。

+0

如果您使用的是預構建的工具鏈,那麼它可能已經包含gdb的交叉編譯版本。如果不是的話,你可以按照下面的答案建立你自己的。 – 2012-07-17 13:12:28

回答

4

您基本上需要某種形式的cross compilation。一個交叉編譯器將允許你在一臺主機(在你的情況下是x86)上編譯目標機器(在你的情況下是MIPS)。所以你可以從x86機器上生成MIPS二進制文件。此外,您還可以獲得與編譯器關聯的所有其他工具,例如objdump。在這裏你有一個關於how to build a cross compiler for GCC的指南。

假設您使用objdump反彙編二進制文件,您可能不需要構建交叉編譯器。 objdump屬於binutils,它可能只是編譯使用MIPS作爲目標的binutils(我從來沒有嘗試過創建binutils的跨平臺版本,所以我不是100%確定的)。

編輯:我剛剛讀了標題,並意識到你正在使用gdb。在這種情況下,我相信你需要創建一個完整的交叉編譯器,並創建一個跨平臺版本gdb

+0

http://opencores.org/project,mpx mpx核心是mips克隆,瀏覽repo中繼/ gcc/build_gcc_linux.zip有一個構建腳本。修補程序只是刪除mpx不支持的說明,您不需要應用它們。它會構建一個gdb以及其他可以反彙編到您的內容的工具。不需要gdb反編譯binutils BTW。 – 2012-07-17 13:50:42

+0

但是在交叉編譯的情況下,我將不得不在MIPS機器上執行這些實用程序。據我所知,交叉編譯是「在arch 1上編譯代碼以在arch 2上運行」而不是「在arch 1上編譯代碼以在arch 1上運行併爲arch 2運行」 – Deepak 2012-07-18 05:20:10

+0

OBJDUMP解決方案有效。它現在清楚地顯示了mips指令集和寄存器。謝謝 !!你們真棒。 – Deepak 2012-07-18 05:32:10