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

  • 相关阅读:
    第一次作业
    C语言I博客作业04
    C语言I博客作业05
    c语言l博客作业02
    C语言I博客作业06
    linux下递归删除目录下所有exe文件
    CSS高级
    CSS样式
    CSS框模型
    Oracle的用户、角色和权限
  • 原文地址:https://www.cnblogs.com/big1987/p/9852602.html
Copyright © 2011-2022 走看看