rpdb2源碼分析(6)

CDebuggerEngine的settrace()函數(shù)

在7291行。

函數(shù)原型:def settrace(self, f = None, f_break_on_init = True, timeout = None, builtins_hack = None)

f:調(diào)用此函數(shù)之前的調(diào)用棧。

f_break_on_init:設(shè)置為False了。

builtins_hack :設(shè)置為被調(diào)試的文件全路徑名。

timeout :沒有動,取默認(rèn)值None。

1、獲得線程ID。

使用了thread.get_ident()函數(shù),不錯,學(xué)習(xí)到一招。

2、【待分析】self.set_request_go_timer(timeout)

不知道是干嗎的。

3、根據(jù)傳入?yún)?shù),初始化一些內(nèi)部變量。

4、【待分析】進行代碼調(diào)試跟蹤。

threading.settrace()

雖然不太明白這個函數(shù)是干什么用的,但是大概理解對多線程,要想trace代碼,必須先調(diào)用它,同時還要調(diào)用sys.settrace,二者缺一不可。

threading.settrace(self.trace_dispatch_init)

trace_dispatch_init:這是一個函數(shù),每次執(zhí)行一次,都要經(jīng)過這個函數(shù)處理,達(dá)到了代碼調(diào)試跟蹤的目的。

其實要想追蹤,還有一個條件,那就是設(shè)置調(diào)用棧的f_trace,一旦設(shè)置,系統(tǒng)就死了,下次執(zhí)行就進入到trace_dispatch_init函數(shù)中了。

f.f_trace = self.trace_dispatch_init

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 方法封裝(Alt+Shift + M) //創(chuàng)建集合 //HashSetH=new HashSet(); Set ...
    chcvn閱讀 502評論 0 0
  • 人,總不愿意碰觸那些刻骨銘心的痛,把期望寄托于時間,望能撫平一道道傷。母親離開我已整整一年了,那些痛苦的回憶...
    修身靜養(yǎng)閱讀 842評論 1 1
  • 多年前,隨著《狼圖騰》的大熱,狼,這個千年大反派,一下子徹底洗白!曾經(jīng)猙獰的面目,成了尊嚴(yán)的象征,曾經(jīng)嗜...
    易之易閱讀 614評論 0 1
  • 貓七歲閱讀 172評論 1 2

友情鏈接更多精彩內(nèi)容