[Python] 在 multi-thread 程式中使用 PDB 來做 debugging
用 python 寫程式,有時需要 debug 的時候,
我都會使用 PDB 來叫用 python debugger 來單步執行或設中斷點,
執行方法也很簡單,就是 python -m pdb <python file>
但最近遇到一個問題,當程式裡面有 multi-thread 的時候,
設定的中斷點就會失效,永遠也不會攔截到,造成蠻大的困擾…
查了一下,找到了一篇 stackoverflow: Is there a way to attach a debugger to a multi-threaded Python process 有一個解法,
試了一下倒也可以用~
只是這方法需要去修改到原始碼,稍微美中不足了點…
方法如下,在要 debug 的程式片段前(通常是在 thread 執行的部分),
插入下面的程式碼:
# Add this before your code for debugging
import pdb
pdb.set_trace()
import pdb
pdb.set_trace()
# Code for debugging…
接著再用 python <python file> 的方式直接執行,
當執行到插入程式碼的地方,就會自動進入 debugger 模式了~
但要注意的是在 thread 狀態下,中斷點可能只有一次的有效性~~
(本頁面已被瀏覽過 1,243 次)