【待分析】StartServer()函數(shù)
在14401行。函數(shù)原型是:def StartServer(args, fchdir, _rpdb2_pwd, fAllowUnencrypted, fAllowRemote, rid)。
1、引入全局變量。
2、獲得文件的全路徑名,存放在變量ExpandedFilename中。
獲得值為:'/root/webssh/hello.py'
3、【待分析】workaround_import_deadlock()
這個不知道是干什么的,以后再分析吧。
4、把被調(diào)測的文件所在目錄添加的搜索路徑中,sys.path[0]。
5、設(shè)置sys.argv的值。
6、注冊退出回調(diào)函數(shù)。
7、【待分析】生成CDebuggerEngine對象。
g_debugger = CDebuggerEngine()
8、【待分析】生成CDebuggeeServer對象。
g_server = CDebuggeeServer(ExpandedFilename, g_debugger, _rpdb2_pwd, fAllowUnencrypted, fAllowRemote, rid)
9、【待分析】啟動g_server.start()。
10、【待分析】設(shè)置臨時斷點(diǎn)。用于一開始就暫停。
11、sys._getframe(0)
獲取當(dāng)前棧信息,不知道為什么要加上參數(shù)0?
——明白了,這個0表示當(dāng)前棧,如果為1,表示上層棧,是誰調(diào)用了它??梢圆惠斎?yún)?shù),默認(rèn)就是0。
12、【待分析】調(diào)用settrace函數(shù)。
g_debugger.settrace(f, f_break_on_init = False, builtins_hack = ExpandedFilename)
f:其中f是當(dāng)前的調(diào)用棧,不知道有什么用沒有?
f_break_on_init : 為False,不知道有什么用沒有。
builtins_hack :被調(diào)試對象全路徑名。