17.4. 设置调试环境

软件开发是一项复杂的任务,没有没有没有bug的软件。调试是消除软件故障的过程。调试是一项任务,可以涉及一些其他软件,以促进调试过程。

插件可能变得复杂,需要调试工具来发现问题。调试过程的复杂性可以从在代码中插入一些打印或添加日志消息开始,通过指示如何查找执行问题来 完成对执行指令的控制。

在第三方QGIS插件的代码中插入断点以在某个点停止执行,这对于发现它是如何工作的很有用。

17.4.1. 什么是调试器

有一组可能的工具来调试Python代码,但是我们只关注PyDev,它减少了安装步骤的数量,并允许在不修改插件代码的情况下进行远程调试。

PyDev是一个Eclipse插件,Eclipse是一个用于开发几乎所有东西的自由软件可编程框架。PyDev可以添加到Eclipse的本地安装中,从市场中添加, 但是为了减少安装步骤,建议您安装Aptana Studio 3,这是一个已经安装了PyDev的Eclipse自定义项。

17.4.2. 安装Aptana

Aptana Studio 3可从项目主页下载,网址为 http://aptana.com/ 。只需解压缩文件夹并执行可执行文件,阿普塔那斯图,在解压缩的文件夹中。

AptanaStudio3的安装版本至少应该是3.6.1版,因为以前的一些版本有不利于代码编写的错误。如果3.6以上的版本不可用,则需要升级到beta版本。 要升级,请按照 http://preview.appcelerator.com/aptana/studio3/standalone/update/beta/

17.4.3. 设置Python

为了允许QGIS与PyDev守护进程连接,有必要将PyDev守护进程路径添加到“PYTHONPATH”环境变量。要查找要添加的路径,请查找“pydevd.py”文件; 它将在“AptanaStudio”安装路径。如果找到多个版本,请获取具有最高版本号的路径。

例如,在我的Linux安装中,有以下路径:

/users/ginetto/Aptana_Studio_3.6/plugins/org.python.

pydev_3.0.0.1388187472/pysrc/pydevd.py

/users/ginetto/Aptana_Studio_3.6/plugins/org.python. pydev_3.8.0.201409251235/pysrc/pydevd.pyc

在这种情况下,我们应该使用以下路径:

/users/ginetto/Aptana_Studio_3.6/plugins/org.python. pydev_3.8.0.201409251235/pysrc

可以在会话中添加此路径,“PYTHONPATH”,或直接在QGIS环境中通过修改“PYTHONPATH”通过导航到“选项”系统 在“环境”部分, 如下图所示 图 17.12

_images/image437_x3s.jpg

图 17.12 PYTHONPATH系统环境界面

这样就可以导入“皮德韦德”Python模块进入QGIS Python控制台并设置到PyDev调试服务器的连接,如下一节所述。要测试路径设置是否正确, 请尝试在QGIS Python控制台中键入以下代码: 导入pydevd如果它产生一个错误,意味着“PYTHONPATH”的路径设置不正确“皮德韦德”模块。

17.4.4. 启动Pydevd服务器

连接到PyDev服务器的第一步是在Aptana环境中启动服务器。这可以通过打开Aptana的Debug透视图, 然后使用相对的start/stop按钮启动服务器来实现。按钮和调试透视图如下所示 图 17.13

_images/image438_xd9.jpg

图 17.13 Aptana环境服务器

点击右边红色圆圈的按钮可以打开Debug透视图。如果“调试透视图”按钮不可用,则可以将其添加到Aptana菜单中。引导到窗口“开放视角”其他 。 启动/停止服务器按钮由左侧的红色圆圈显示。

启动服务器时,某些消息将显示在 调试 窗口由左上角的红色框突出显示;这意味着服务器正在运行。在“调试”窗口中,将列出所有连接的客户端。

在底部的红色框中,Aptana控制台窗口显示服务器响应端口, 5678 ;这是我们将用来从QGIS连接的信息。

17.4.5. 将QGIS连接到Pydevd服务器

在运行PyDev服务器之后,我们将从QGIS连接到它。在QGIS Python控制台中,键入以下代码:

导入pydevd尝试:

pydevd.settrace(port=5678, suspend=False) except: pass

前面的代码首先导入“皮德韦德”模块,然后使用“设置跟踪”方法。连接在里面try/catch允许捕获在情况下引发的异常“设置跟踪”无法连接。 连接需要几秒钟的时间。如果连接失败,Python控制台将显示类似于以下消息的消息:

无法连接到127.0.0.1:5678回溯(上一次最近的呼叫):

File "/mnt/data/PROGR AMMING/IDE/Aptana_Studio_3/plugins/org.python.pydev_3.8.0.201409251235/pysrc/pydevd_comm.py", line 484, in StartClient
[s.connect((host, port)) File "/usr/lib/python2.7/socket.py", line 224, in meth return
getattr(self._sock,name)(*args) error: [Errno 111] Connection refused]

如果连接成功,Aptana调试透视图将更改,显示连接的客户端。

17.4.6. 使用远程调试QGIS插件连接

最简单的设置方法 PYTHONPATH 并且连接到PyDev服务器使用 远程调试器 可以像往常一样安装的实验性插件。主界面如下图所示 图 17.14

_images/image439_xey.jpg

图 17.14 远程调试器主界面

这个“远程调试器”插件负责设置"PYTHONPATH",写在"pydevd路径"文本框。