1. 程式人生 > 實用技巧 >QGIS 外掛開發Debug教程——使用Pycharm

QGIS 外掛開發Debug教程——使用Pycharm

參考文章:Remote Debugging Guide for Python

PyQGIS CookBook 16.4. IDE settings for writing and debugging plugins

Remote Debugging with PyCharm

一、檢查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的斷點除錯工具進行正常的除錯了。