您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(guān)python中pdb怎么用的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
1、pdb啟動。
當前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、每一幀不同事件的處理都會經(jīng)過中斷控制邏輯。
主要是stop_here(line事件也會經(jīng)過break_here)函數(shù),處理后決定代碼是否中斷,需要中斷到哪一行。
如果需要中斷,觸發(fā)子類方法user_#event。
子類可以通過interaction更新棧幀信息,并在控制臺上打印相應(yīng)的信息,然后執(zhí)行cmdloop,使控制臺等待交互輸入。
def interaction(self, frame, traceback): self.setup(frame, traceback) # 當前棧、frame、local vars self.print_stack_entry(self.stack[self.curindex]) self.cmdloop() self.forget()
3、用戶輸入調(diào)試命令。
如next并返回汽車時,他們將首先調(diào)用set_#命令,設(shè)置stopframe、returnframe和stoplineno,這將影響中斷控制的邏輯,從而決定運行到下一幀的中斷結(jié)果。
4、調(diào)試過程控制類的命令。
一般do_#命令都會返回1,這樣這次runloop馬上就結(jié)束了,下一次運行到某一幀觸發(fā)中斷會再次啟動runloop(見步驟3);對信息獲取類的命令,do_#命令沒有返回值,以保持目前的中斷狀態(tài)。
5、代碼運行到下一幀,重復(fù)步驟3。
感謝各位的閱讀!關(guān)于“python中pdb怎么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。