通過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中間 在 左側單機 設定完斷點以...