前面講過的內容最終都要用self.msg調試, 顯然不省事, 習慣用IDE指變量名就看到內容的時代, 這方法太慢了.
經過一番探索, 終於找到了簡單方法, 其實就是以前我們調試c++ dll動態庫的辦法 : 附加到進程 (不知這次面對ink插件爲啥遲遲沒想到這個辦法 , 饒了彎路)
具體做法是:
1. 在插件裏寫窗體(或者消息框) 讓程序停下來等待輸入 , 比如我的前一篇 https://blog.csdn.net/majian/article/details/106851866 用Qt窗體.
2. 用vscode打開插件的源碼py文件, 在窗體後的代碼位置設個斷點. 比如我想看輸入的x值, 下圖22行設斷點:
3. 打開inkscape, 調用插件, 當對話框彈出時, 這時 inkscape已經調用了python進程 , 在"任務管理器"裏能看到python進程的id
4. 在窗體裏輸入一個值, 比如 x=12
5. 回到 vscode界面, 點擊右側界面的"運行" ctrl+shift+D
6. 如果上圖出現的不是 "運行和調試" 按鈕, 那就說明你已經有 launch.json , 點擊 齒輪按鈕 "打開launch.json", 找到其路徑,刪除該文件, 在我電腦裏 該文件在 D:\Inkscape\share\inkscape\extensions\.vscode 目錄裏, 刪除後回到vscode界面, 就看到步驟5的界面出現 "運行和調試" 按鈕
7. 點擊 "運行和調試" 按鈕, 選擇: Attach using process ID
8. 選擇 pythonw.exe ( 我在前面的筆記裏已說過修改 python 解釋器爲 自己安裝目錄的 pythonw.exe )
9. 好了, 附加成功, 斷點也設置好了, 現在回到Inkscape界面, 點擊pushbutton 讓程序繼續往下走, 當運行到斷點處時, 就可以看到x的數值爲12了.
10. 有時附加進程沒有成功, 在vscode裏出現"Time Out waiting "的提示, 需要多試幾次
11. 更好的方法是用visual studio 2019打開py文件, F9設置斷點, 用 主菜單->調試->附加到進程 調試, 每次都能準確停留在斷點裏. 所以是時候考慮用vs2019寫python代碼了. 老牌軟件在調試方面的功底不容小覷, 你大爺還是你大爺. 下圖是在vs2019裏調試的截圖.