2013-04-25 108 views
0

我試圖將gdb反彙編輸出(disas [address])與源代碼進行匹配。我知道這樣的映射可以使用(gdb)信息行*地址來找到匹配的行。不過,我不太瞭解反彙編輸出的格式。具體而言,以下數字+4722和+4281是什麼意思?如何解釋gdb反彙編輸出?

0x00002ad61e45bd02 <+4722>: jmpq 0x2ad61e45bb49  <MsgManager::ForwardMsg(boost::shared_ptr<Channel>, boost::shared_ptr<Msg>, boost::shared_ptr<Context>)+4281> 

我正在使用GNU gdb(GDB)7.4.1。

回答

3

具體,有什麼事下面的數字,4722和4281,平均

地址0x00002ad61e45bd02指令,這是從當前函數開始4722個字節(最有可能的MsgManager::ForwardMsg())是跳轉到地址0x2ad61e45bb49,這是從MsgManager::ForwardMsg()開始的4281字節。

您也可能會發現(gdb) disas/m命令得心應手。

+0

我想你可能會在研究中顯示出更多的努力,例如你可能會開始閱讀一些有關反彙編的實際文檔https://sourceware.org/gdb/current/onlinedocs/gdb/Machine -Code.html#機器代碼,並搜索特定架構上的asm參考 – Jorch914 2015-05-04 22:17:18