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

  • 相关阅读:
    php中文乱码处理方法
    Zend 官方框架增加 Swoole 协程支持 !
    矩阵行列式的向量表示
    ArduinoYun教程之ArduinoYun硬件介绍
    MIT 操作系统实验 MIT JOS lab1
    java File_encoding属性
    Java入门 第一季第五章 编程练习解析
    android 三种定位方式
    6.30
    OpenJudge百炼习题解答(C++)--题3142:球弹跳高度的计算
  • 原文地址:https://www.cnblogs.com/big1987/p/9852602.html
Copyright © 2020-2023  润新知