通过官方API结合源码,如何分析程序流程

通过官方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方法上打断点,看看代码执行时,有没有走这个;如果没有试试其他的实现类;
当然了,如果通过静态分析可以很容易知道这个执行流程,那么就不用这么做了;

原文地址:https://www.cnblogs.com/big1987/p/9852602.html