參考文章: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的斷點調試工具進行正常的調試了。