新聞中心
1、pdb啟動(dòng)。

當(dāng)前frame綁定跟蹤函數(shù)trace_dispatch。
def trace_dispatch(self, frame, event, arg): if self.quitting: return # None if event == 'line': return self.dispatch_line(frame) if event == 'call': return self.dispatch_call(frame, arg) if event == 'return': return self.dispatch_return(frame, arg) if event == 'exception': ...
2、每一幀不同事件的處理都會(huì)經(jīng)過中斷控制邏輯。
主要是stop_here(line事件也會(huì)經(jīng)過break_here)函數(shù),處理后決定代碼是否中斷,需要中斷到哪一行。
如果需要中斷,觸發(fā)子類方法user_#event。
子類可以通過interaction更新棧幀信息,并在控制臺(tái)上打印相應(yīng)的信息,然后執(zhí)行cmdloop,使控制臺(tái)等待交互輸入。
def interaction(self, frame, traceback): self.setup(frame, traceback) # 當(dāng)前棧、frame、local vars self.print_stack_entry(self.stack[self.curindex]) self.cmdloop() self.forget()
3、用戶輸入調(diào)試命令。
如next并返回汽車時(shí),他們將首先調(diào)用set_#命令,設(shè)置stopframe、returnframe和stoplineno,這將影響中斷控制的邏輯,從而決定運(yùn)行到下一幀的中斷結(jié)果。
4、調(diào)試過程控制類的命令。
一般do_#命令都會(huì)返回1,這樣這次runloop馬上就結(jié)束了,下一次運(yùn)行到某一幀觸發(fā)中斷會(huì)再次啟動(dòng)runloop(見步驟3);對(duì)信息獲取類的命令,do_#命令沒有返回值,以保持目前的中斷狀態(tài)。
5、代碼運(yùn)行到下一幀,重復(fù)步驟3。
以上就是python中pdb的使用流程,希望對(duì)大家有所幫助。更多Python學(xué)習(xí)指路:創(chuàng)新互聯(lián)Python教程
本文教程操作環(huán)境:windows7系統(tǒng)、Python 3.9.1,DELL G3電腦。
分享題目:創(chuàng)新互聯(lián)Python教程:python中pdb的使用流程
URL標(biāo)題:http://m.5511xx.com/article/coeshgi.html


咨詢
建站咨詢
