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的断点调试工具进行正常的调试了。

QGIS 插件开发Debug教程——使用Pycharm的更多相关文章
- jQuery插件开发详细教程
这篇文章主要介绍了jQuery插件开发详细教程,将概述jQuery插件开发的基本知识,最佳做法和常见的陷阱,需要的朋友可以参考下 扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间. ...
- qgis 插件开发
qgis 插件开发 http://blog.csdn.net/v6543210/article/details/40480341
- Web开发入门教程:Pycharm轻松创建Flask项目
Web开发入门教程:Pycharm轻松创建Flask项目 打开Pycharm的file,选择创建新的项目,然后弹出对话框,我们可以看到里面有很多的案例,Flask.Django等等,我们选择生成Fla ...
- BeatSaber节奏光剑插件开发官方教程1-创建一个插件模板
原文:https://wiki.assistant.moe/modding/intro 一.简介 Beat Saber 开发环境:unity2018.C#..NET framework 4.6. 此教 ...
- jQuery插件开发精品教程,让你的jQuery提升一个台阶
要说jQuery 最成功的地方,我认为是它的可扩展性吸引了众多开发者为其开发插件,从而建立起了一个生态系统.这好比大公司们争相做平台一样,得平台者得天下.苹果,微软,谷歌等巨头,都有各自的平台及生态圈 ...
- Jquery插件开发精品教程
最开始接触jquery对他提供的各种插件总是十分有兴趣,但是总是不理解为什么这样写,从网络上查询了很久终于找到这篇文章,讲解的很详细,分享给大家. 要说jQuery 最成功的地方,我认为是它的可扩展性 ...
- 转:jQuery插件开发精品教程,让你的jQuery提升一个台阶
要说jQuery 最成功的地方,我认为是它的可扩展性吸引了众多开发者为其开发插件,从而建立起了一个生态系统.这好比大公司们争相做平台一样,得平台者得天下.苹果,微软,谷歌等巨头,都有各自的平台及生态圈 ...
- 【转载】jQuery插件开发精品教程,让你的jQuery提升一个台阶
要说jQuery 最成功的地方,我认为是它的可扩展性吸引了众多开发者为其开发插件,从而建立起了一个生态系统.这好比大公司们争相做平台一样,得平台者得天下.苹果,微软,谷歌等巨头,都有各自的平台及生态圈 ...
- [转]jQuery插件开发精品教程,让你的jQuery提升一个台阶
原文链接:http://www.cnblogs.com/Wayou/p/jquery_plugin_tutorial.html 要说jQuery 最成功的地方,我认为是它的可扩展性吸引了众多开发者为其 ...
随机推荐
- [WC2016]挑战NPC(一般图最大匹配)
[WC2016]挑战NPC(一般图最大匹配) Luogu 题解时间 思路十分有趣. 考虑一个筐只有不多于一个球才有1的贡献代表什么. 很明显等效于有至少两个位置没有被匹配时有1的贡献. 进而可以构造如 ...
- PCIe Tandem PROM 方法
PCIe Tandem PROM 方法 什么是Tandem PROM? 简单总结:市面多数的FPGA都是SRAM型,需要在上电时从外部存储器件完成代码的加载,对于具有PCIe功能的SRAM FPGA而 ...
- Java IO流处理
字节流是由字节组成的;字符流是由字符组成的Java里字符由两个字节组成. 1字符=2字节JAVA中的字节流是采用ASCII编码的,字符流是采用好似UTF编码,支持中文的 Java IO流处理 面试题汇 ...
- 阐述 ArrayList、Vector、LinkedList 的存储性能和特性?
ArrayList 和 Vector 都是使用数组方式存储数据,此数组元素数大于实际存储的 数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉 及数组元素移动等内存操作,所以索引数 ...
- 数组有没有 length()方法?String 有没有 length()方法?
数组没有 length()方法,有 length 的属性. String 有 length()方法.JavaScript中,获得字符串的长度是通过 length 属性得到的,这一点容易和 Java 混 ...
- 什么是持续集成CI?
持续集成(CI)是每次团队成员提交版本控制更改时自动构建和测试代码的过程. 这鼓励开发人员通过在每个小任务完成后将更改合并到共享版本控制存储库来共 享代码和单元测试.
- 提交Form表单,submit之前做js判断处理
效果: 在点击提交按钮时,首先进行js判断, 如果不符合条件,则alert出提示信息,并return false. 主要点就在于给form表单添加一个onsubmit事件. 在onsubmit事件中定 ...
- <img> 标签 图片加载失败时候处理方案
应用场景 在开发中,经常遇到一种情况,数据库不存在图片地址,或者存在图片地址,但图片已经被删除,这个时候会出现加载失败情况.提供以下解决方案 解决方案 在 img 标签 加上onerror=" ...
- react、react-router、redux 也许是最佳小实践1
小前言 这是一个小小的有关react的小例子,希望通过一个小例子,可以让新手更好的了解到react.react-router4.0.redux的集中使用方法. 这是基于create-react-app ...
- webpack+vue-cli+ElementUI+vue-resource 前端开发
线上商城项目(电脑0环境)1.安装node.js (参考http://www.runoob.com/nodejs/nodejs-install-setup.html): 2.安装 webpack (全 ...