? ? ? ? image在lldb上是命令target modules的簡寫开呐,它的作用是查詢制定模塊或者庫的信息,這里的模塊(module)包括可執(zhí)行文件(executable)胰坟、動(dòng)靜態(tài)庫(framework)和插件(plugin)没卸,在iOS中大部分是動(dòng)態(tài)庫例如UIKit。這些信息包括公有屬性方法沪停、私有屬性方法煤辨。對(duì)于公有屬性我們能夠直接得到所以并沒有太多作用,但是能夠獲得私有的屬性跟方法木张,這對(duì)我們探索研究學(xué)習(xí)一些非開源的庫有非常大的幫助众辨。接下來介紹image的用法。
image list
? ? ? ?這條指令會(huì)列出當(dāng)前的可執(zhí)行文件(程序)所以已經(jīng)加載好的模塊舷礼,列出的信息里有模塊的UUID鹃彻、內(nèi)存地址和文件路徑。在這個(gè)命令后加上所有查詢的模塊名就可以單獨(dú)獲取該模塊的信息妻献。例如輸入image list UIKit就能獲取到UIKit的相關(guān)信息蛛株。
image lookup
? ? ? ? 這條指令能夠根據(jù)用戶的輸入從已加載好的模塊里的信息篩選出符合條件的信息(指定方法或函數(shù)的信息)。舉個(gè)例子育拨,輸入指令image lookup -n [UIViewController init], 就能獲得關(guān)于這個(gè)方法的信息谨履。這里的-n所代表的是篩選條件為與用戶輸入相同。另外還有另外一個(gè)篩選方式至朗,-rn屉符,它可以讓用戶使用正則表達(dá)式來進(jìn)行查詢。這是一個(gè)非常實(shí)用的功能,嘗試隨便在一個(gè)項(xiàng)目的lldb里輸入 image lookup -rn '\[UIViewController\(\w+\)\ '矗钟, 你將得到一大堆關(guān)于UIViewController的方法唆香,仔細(xì)看下,你會(huì)發(fā)現(xiàn)里面有很多方法都是沒見到過的吨艇,這些方法其實(shí)就是UIViewController的私有方法躬它。
image dump symfile
? ? ? ?這條指令能夠獲得指定模塊的全部符號(hào)表信息。