pdb
next
指令不會超越列表解析,而是逐步執行每次迭代。有沒有一種方法可以讓它們在列表理解後的下一行繼續調試?如何跳過Python調試器(pdb)中的列表理解?
我不得不求助於列出代碼,在下一行設置一個斷點,然後繼續執行到下一個斷點。這很煩人,我覺得必須有更好的方法。
pdb
next
指令不會超越列表解析,而是逐步執行每次迭代。有沒有一種方法可以讓它們在列表理解後的下一行繼續調試?如何跳過Python調試器(pdb)中的列表理解?
我不得不求助於列出代碼,在下一行設置一個斷點,然後繼續執行到下一個斷點。這很煩人,我覺得必須有更好的方法。
您可以使用until
命令。在pdb
的help until
輸出:
UNT(IL)
繼續執行,直到與許多比目前 一個達到或更大的線,直到當前幀返回
在闡述斯文的答覆因爲我最近不得不向最近的同事描述until
和next
。這是不特定的列表理解是stuck
旁邊,但對於一般的循環:
的
until
命令就像next
,不同之處在於它明確繼續執行,直到達到同樣的功能用線一個高於當前值的行號。
,這意味着你可以在循環步驟與until
只是爲了掩飾的完整性step
和next
:
的
step
命令用於執行當前行,然後停止在下一個執行點
這意味着它將按指令進行指令。注意連接;
的instrucitons將作爲一條指令處理。
var A=0; var B=0 #Note: that will count as one instruction
的下一個命令是相同的步驟,但不進入功能,從正在執行的語句調用。實際上,它在一次操作中一直通過函數調用到當前函數中的下一個語句。
next
幫助跳過多個指令,在多個變量定義的函數中,它將跳過所有指令。
下面是一個說明的場景的一個示例:
實施例:pdb_until。PY
aVar = 3
x = [i for i in range(0,30)]
bVar = 5
與PDB運行此:
python -m pdb pdb_until.py
啓動我們的互動環節:
> pdb_until.py(1)<module>()
-> aVar = 3
(Pdb) step #our Input, we step
> pdb_until.py(2)<module>()
-> x = [i for i in range(0,10)]
(Pdb) next #our Input, next
> pdb_until.py(2)<module>()
-> x = [i for i in range(0,10)]
(Pdb) next #our Input, we are now stuck on line 2
> pdb_until.py(2)<module>()
-> x = [i for i in range(0,10)]
(Pdb) until #our Input, until steps over (runs list comp)
來源:Python標準庫的例子,道格·海爾曼