[Python] 在 multi-thread 程式中使用 PDB 來做 debugging

[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()

# Code for debugging…

 

接著再用 python <python file> 的方式直接執行,

當執行到插入程式碼的地方,就會自動進入 debugger 模式了~

但要注意的是在 thread 狀態下,中斷點可能只有一次的有效性~~

 

(本頁面已被瀏覽過 1,243 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料