xcode 使用 2 LinkMap 檔案 生成

2021-07-25 03:37:28 字數 3948 閱讀 4180

通過link map檔案可以直觀的看到那些檔案占用的包的大小。這是我分析之後的檔案,可以直觀的看出那些東西占用了多少的記憶體。

build setting 中  設定 write link map  檔案。

2.接著是乙個段表,描述各個段在最後編譯成的可執行檔案中的偏移位置及大小,包括了**段(__text,儲存程式**段編譯後的機器碼)和資料段(__data,儲存變數值)

# sections:

# address   size        segment section

0x100005b00 0x0304a29c  __text  __text

0x10304fd9c 0x00004bc0  __text  __stubs

0x10305495c 0x000044e8  __text  __stub_helper

0x103058e50 0x0021563c  __text  __cstring

0x10326e48c 0x000ad400  __text  __objc_methname

0x10331b88c 0x0000e6ba  __text  __objc_classname

0x103329f46 0x000166e3  __text  __objc_methtype

0x103340640 0x002a0b60  __text  __const

0x1035e11a0 0x001346d4  __text  __gcc_except_tab

0x103715874 0x00008c78  __text  __ustring

0x10371e4ec 0x0004d80c  __text  __unwind_info

0x10376bcf8 0x00000300  __text  __eh_frame

0x10376c000 0x000015d8  __data  __got

0x10376d5d8 0x00003280  __data  __la_symbol_ptr

0x103770858 0x00001838  __data  __mod_init_func

0x103772090 0x000ff7f8  __data  __const

0x103871888 0x0006f9c0  __data  __cfstring

0x1038e1248 0x00004778  __data  __objc_classlist

0x1038e59c0 0x00000290  __data  __objc_nlclslist

0x1038e5c50 0x00000708  __data  __objc_catlist

0x1038e6358 0x00000038  __data  __objc_nlcatlist

0x1038e6390 0x00000910  __data  __objc_protolist

0x1038e6ca0 0x00000008  __data  __objc_imageinfo

0x1038e6ca8 0x00206c58  __data  __objc_const

0x103aed900 0x00027f28  __data  __objc_selrefs

0x103b15828 0x000000c0  __data  __objc_protorefs

0x103b158e8 0x000041b8  __data  __objc_classrefs

0x103b19aa0 0x000030c0  __data  __objc_superrefs

0x103b1cb60 0x0000bb54  __data  __objc_ivar

0x103b286b8 0x0002cb00  __data  __objc_data

0x103b551c0 0x01d52748  __data  __data

0x1058a7920 0x00714878  __data  __bss

0x105fbd000 0x0012b978  __data  __common

首列是資料在檔案的偏移位置,第二列是這一段占用大小,第三列是段型別,**段和資料段,第四列是段名稱。

每一行的資料都緊跟在上一行後面,如第二行__stubs的位址0x10304fd9c就是第一行__text的位址0x100005b00加上大小0x0304a29c,整個可執行檔案大致資料分布就是這樣。

3.接著就是按上表順序,列出具體的按每個檔案列出每個對應欄位的位置和占用空間

# symbols:

# address   size        file  name

0x100005b00 0x000000ec  [  2] -[mxrsnaplearninviteview drawrect:]

0x100005bec 0x0000024c  [  2] -[mxrsnaplearninviteview generatorlogoimageqrcode]

0x100005e38 0x0000005c  [  2] _cgrectmake

0x100005e94 0x00000034  [  2] -[mxrsnaplearninviteview invitecode]

0x100005ec8 0x00000050  [  2] -[mxrsnaplearninviteview setinvitecode:]

0x100005f18 0x0000003c  [  2] -[mxrsnaplearninviteview .cxx_destruct]

0x100005f54 0x000001d8  [  3] -[mxrpkhomecellviewmodel initwithmodel:]

0x10000612c 0x0000016c  [  3] -[mxrpkhomecellviewmodel encodewithcoder:]

0x100006298 0x00000268  [  3] -[mxrpkhomecellviewmodel initwithcoder:]

0x100006500 0x00000040  [  3] -[mxrpkhomecellviewmodel desc]

0x100006540 0x00000044  [  3] -[mxrpkhomecellviewmodel setdesc:]

0x100006584 0x00000040  [  3] -[mxrpkhomecellviewmodel name]

0x1000065c4 0x00000044  [  3] -[mxrpkhomecellviewmodel setname:]

0x100006608 0x00000040  [  3] -[mxrpkhomecellviewmodel pic]

0x100006648 0x00000044  [  3] -[mxrpkhomecellviewmodel setpic:]

0x10000668c 0x00000040  [  3] -[mxrpkhomecellviewmodel classifyid]

0x1000066cc 0x00000044  [  3] -[mxrpkhomecellviewmodel setclassifyid:]

0x100006710 0x000000b8  [  3] -[mxrpkhomecellviewmodel .cxx_destruct]

...0x1060c82d0 0x000000c0  [3391] _jerrenv

0x1060c8390 0x000204e0  [4793] _gc_arrays

0x1060e8870 0x00000100  [4793] _gc_bm_table

0x1060e8970 0x00000008  [4793] _gc_noop_sink

同樣首列是資料在檔案的偏移位址,第二列是占用大小,第三列是所屬檔案序號,對應上述object files列表,最後是名字。

4、已廢棄&多餘重複的字段

Xcode使用技巧 Xcode除錯方法

這裡記錄一下自己學習到的一些xcode除錯的方法。這些除錯方法可以讓我們使用xcode編寫 進行除錯時用起來更順心應手。xcode的除錯方法包括執行時設定斷點,列印到控制台,手寫命令列印等。在xcode中需要觀察的變數所在的 處新增斷點,可以讓程式執行到這裡暫停。這時滑鼠懸停在變數名處,xcode會...

Xcode 使用小貼士

一 安裝xcode到developer目錄後make命令不可用解決辦法 1 在使用者主目錄下新建純文字檔案 bash profile 注意前面有個點 2 在檔案中輸入 export path developer usr bin 3 儲存退出,再次重新開啟終端就可以使用make命令了。echo pat...

XCode使用技巧

注意 只能用在 inte ce end中間 由於xcode 4.版本的新特性 property獨攬了 synthesize的功能,進一步簡化了 所以可以理解成xcode 4.以後就可以不再使用 synthesize 注意 只能用在 implementation end中間 在 左側單機 設定完斷點以...