通過官方API結合源碼,如何分析程序流程
阿新 • • 發佈:2018-10-25
Lucene 很多 core 結合 ear 關註 執行 方法 內部
通過官方API結合源碼,如何分析程序流程
通過官方API找到我們關註的API的某個方法,然後把整個流程執行起來,然後在idea中,把我們關註的方法打上斷點,
然後通過Step Out,從內向外一層一層分析調用鏈,然後找出我們要分析的流程的逆流程,然後再通過在每層上面打上
斷點,進而整理出代碼的執行流程;
其實,對於面向對象語言,由於有了多態特性,代碼中有了很復雜的抽象結構,一個接口或者抽象類有很多的實現,有時
通過代碼可以看出來,有些不太好看,程序執行時到底調用了哪個實現類的方法,這就需要按照上面動態的方法,從內向外來試驗
來不斷分析;
舉個實例
背景:我們想要分析lucene的打分是怎麽實現的,那麽我們可以知道
http://lucene.apache.org/core/7_3_1/core/org/apache/lucene/search/similarities/Similarity.SimScorer.html
這個SimScorer的score方法,通過看源碼知道它是Similarity抽象類的內部靜態的抽象類,那麽就可以在某一個實現類比如BM25Similarity
的score方法上打斷點,看看代碼執行時,有沒有走這個;如果沒有試試其他的實現類;
當然了,如果通過靜態分析可以很容易知道這個執行流程,那麽就不用這麽做了;
通過官方API結合源碼,如何分析程序流程