rpdb2源码分析(4)

输入”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))