溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

python中pdb怎么用

發(fā)布時間:2021-09-07 13:41:26 來源:億速云 閱讀:299 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關(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é)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節(jié)

免責(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)容。

AI