美文网首页
rpdb2源码分析(4)

rpdb2源码分析(4)

作者: 道法自然2021 | 来源:发表于2018-09-17 15:29 被阅读0次

    输入”pudb3 rpdb2.py -d hello.py“命令之后,就会启动一个被调试器,其实现原理如何?

    入口函数

    run_rpdb2(),在14774行。

    run_rpdb2()

    函数定义,def run_rpdb2(),在14752行。

    处理过程:

    1、【待分析】调用rpdb2.main()函数。

    2、如果设置了g_fbreakonexit,则调用rpdb2.setbreak()。

    目前暂时也用不到,所以不用理会。

    main函数

    这个才是关键函数,函数原型如下:

    def main(StartClient_func = StartClient, version = RPDB_TITLE)

    StartClient_func :其值设置为StartClient,是一个函数,在当前的情况下,不会用到,所以不用管。

    version :版本信息,也是无关紧要的东西,不用管。

    处理过程:

    1、引入了一些全局变量。

    2、创建一些配置相关的目录。

    3、解析用户输入的参数信息。

    4、定义了一些局部变量,并且根据用户输入参数设置这些变量。

    这里面的关键变量是fWrap,这个变量指示了当前程序是作为debuggee来启动。

    5、要求用户输入密码。

    这里输入的密码是'a'。

    6、调用StartServer()函数。

    这个是关键函数,因为往下执行不下去了,卡在这里了。

    StartServer(_rpdb2_args, fchdir, _rpdb2_pwd, fAllowUnencrypted, fAllowRemote, secret)

    _rpdb2_args:这里面是'hello.py'

    fchdir:指示是否进入到目标目录。当前是False。

    _rpdb2_pwd:此处是'a'。

    fAllowUnencrypted:为True。

    fAllowRemote:此处为False。

    secret:为空字符串。

    相关文章

      网友评论

          本文标题:rpdb2源码分析(4)

          本文链接:https://www.haomeiwen.com/subject/bjdtnftx.html