QGIS 外掛開發Debug教程——使用Pycharm
參考文章:Remote Debugging Guide for Python
PyQGIS CookBook 16.4. IDE settings for writing and debugging plugins
一、檢查Pycharm版本
Eclipse+Pydev使用的是pydev進行除錯,在Pycharm中我們依然可以使用pydev進行除錯。根據Jetbrains的官方文件,Pycharm Community版本不支援Remote Debug。如果想要使用Pycharm的遠端除錯功能呼叫Pydev包進行除錯,就需要安裝Professional版本
JetBrains全家桶提供了學生授權供學生免費使用。只要使用武大的郵箱在其官網註冊一個賬號,然後申請學生授權就可以免費使用JetBrains的所有產品。
參考:https://jingyan.baidu.com/article/acf728fd862d44f8e510a385.html
二、為Python直譯器安裝pydevd-pycharm庫
首先在Run/Debug Configurations中選擇edit configurations,開啟編輯頁面。
點選+號,選擇新增一個Python Debug Server
根據右側的提示,記住需要安裝的pydevd-pycharm庫的版本號,我這裡是202.7319.64
然後設定IDE host name為localhost或者127.0.0.1,埠Port設定為53100
開啟選單欄的File->Settings,選擇Python Interpreter,可以看到我們之前配置好的Python環境(QGIS自帶的python環境)
點選旁邊的+號,開啟Package新增頁面,搜尋pydevd-pycharm包。
勾選Specify version,並選擇之前我們記住的版本號,202.7319.64。點選Install Package安裝pydevd-pycharm包。
三、除錯QGIS外掛
在需要除錯的python模組中引入pydevd-pycharm包
import pydevd_pycharm
並根據需要除錯的位置,編寫如下語句
# 其中的'localhost'和port是在Python Debug Server中填寫的值
pydevd_pycharm.settrace('localhost', port=53100, stdoutToServer=True, stderrToServer=True)
該語句相當於一個斷點,執行除錯的時候會首先在該語句的位置停止,然後才能繼續執行程式碼。
在Pycharm中點選Debug按鈕,控制檯中會提示正在等待連線
現在開啟QGIS,使用Plugin Reloader重新載入我們編寫的外掛,然後執行外掛
此時,對外掛進行操作,就會在我們呼叫pydevd_pycharm.settrace()的位置停下來(可以看到控制檯中已經顯示連線到了pydev debugger),就下來就能夠使用pycharm的斷點除錯工具進行正常的除錯了。