[轉] GDB disassemble

來源:互聯網
上載者:User

標籤:

前面幾篇談GDB偵錯工具的文章,都對反組譯碼語焉不詳。這裡詳細討論一下disassemble/disass命令

反組譯碼一個函數
disass func_name

反組譯碼一段記憶體位址, 第1個參數是起始地址,第2個是終止地址
disassemble 0×0 0×10

先看看文檔 Debugging with GDB
http://sourceware.org/gdb/download/onlinedocs/gdb.html
源碼和機器碼
可以使用 info line 命令來映射一個源碼行到程式地址,然後使用命令disassemble顯示一個位址範圍的機器指令。
比如,我要查看main函數從哪裡開始

(gdb) info line main
Line 34 of “rank.c” starts at address 0x804847f
and ends at 0×8048493 .
(gdb) info line *0x804847f
Line 34 of “rank.c” starts at address 0x804847f
and ends at 0×8048493 .
並且,info line會修改 x/i 命令的預設的起始地址

disassemble 不帶參數,預設的反組譯碼範圍是 所選擇幀的pc附近的函數
單個參數, 就是pc, 當然也可以是函數名,因為函數名 也是一個 地址; 這樣範圍就是該pc附近的函數
兩個參數,就是記憶體位址範圍

set disassembly-flavor intel 將彙編指令格式 設定為intel格式,預設是att
(gdb) show disassembly-flavor
The disassembly flavor is “att”.

下斷點:

b *0x00007fffab642

查看 反組譯碼指令的另一個方法就是使用x
x/3i $pc

x/100u $pc
顯示pc開始的3條指令

逐步執行:

si

單行執行:

ni

 

[轉] GDB disassemble

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.