rpdb2源码分析(5)

【待分析】StartServer()函数

在14401行。函数原型是:def StartServer(args, fchdir, _rpdb2_pwd, fAllowUnencrypted, fAllowRemote, rid)。

1、引入全局变量。

2、获得文件的全路径名,存放在变量ExpandedFilename中。

获得值为:'/root/webssh/hello.py'

3、【待分析】workaround_import_deadlock()

这个不知道是干什么的,以后再分析吧。

4、把被调测的文件所在目录添加的搜索路径中,sys.path[0]。

5、设置sys.argv的值。

6、注册退出回调函数。

7、【待分析】生成CDebuggerEngine对象。

g_debugger = CDebuggerEngine()

8、【待分析】生成CDebuggeeServer对象。

g_server = CDebuggeeServer(ExpandedFilename, g_debugger, _rpdb2_pwd, fAllowUnencrypted, fAllowRemote, rid)

9、【待分析】启动g_server.start()。

10、【待分析】设置临时断点。用于一开始就暂停。

11、sys._getframe(0)

获取当前栈信息,不知道为什么要加上参数0?

——明白了,这个0表示当前栈,如果为1,表示上层栈,是谁调用了它。可以不输入参数,默认就是0。

12、【待分析】调用settrace函数。

g_debugger.settrace(f, f_break_on_init = False, builtins_hack = ExpandedFilename)

f:其中f是当前的调用栈,不知道有什么用没有?

f_break_on_init : 为False,不知道有什么用没有。

builtins_hack :被调试对象全路径名。

你可能感兴趣的:(rpdb2源码分析(5))