【待分析】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 :被调试对象全路径名。
网友评论