09GDB查看內存分布


說明:

gdb中使用“x”命令來打印內存的值,格式為“x/nfu addr”。含義為以f格式打印從addr開始的n個長度單元為u的內存值。參數具體含義如下:
a)n:輸出單元的個數。
b)f:是輸出格式。比如x是以16進制形式輸出,o是以8進制形式輸出,等等。
c)u:標明一個單元的長度。b是一個byteh是兩個byte(halfword),w是四個byte(word),g是八個byte(giant word)。

 例如打印連續的4個整數的內存:x / 4dw ptr

其中ptr是連續內存的首地址,d表示的整數格式。

 

1. 整形內存查看

 

 1)要斷點的代碼行12

2)執行斷點命令,斷點到代碼行12
3)運行程序,停止在代碼行12
4)執行查看整數d內存的分布的命令:x /4xb &d,4代表4個單位,b代表單位為字節,x代表顯示格式為16進制(使用16進制顯示方便,因為一個字節正好可以顯示兩個16進制的數字)
5)p /x d 查看變量d的16進制數字:0x138

可以看到,內存分布是小端序:0x38 0x01,逆序后:0x138,和我們查看到的內存是一致的。

 

 2. 查看char*/char[]內存結構

 

 通過上圖可以看出,先求char*/char[]的長度,然后再獲取它們的內存結構。6db或者3db中的d代表10進制顯示

2. 結構體內存查看

 

1)待查看結構體變量

2)斷點到結構體變量初始化之后

3)運行

4)查看結構體變量總共內存大小

5)查看結構體變量內存分布:x  /20b  &tc,三部分分別是命令x, 查看長度20個字節,待查看變量的地址&tc

6)結構體變量的第一部分char name[12],他后面的97對應的字段是gener,33對應的的是age,通過這個可以看到各個字段之間的對齊關系

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM