Python3调试实现

一、说明

在上家公司第一次听说”交叉编译“,但开发机环境配置一直没成功,后来也就不了了之了,所以一直不太懂”交叉编译“具体实现上是怎么个形式。

Python在Windows上和Linux上是有些差别的,在Windows上运行得好的程序在Linux上不一定没有问题,而在Windows开发好代码再传到Linux上运行、配合print()函数进行调试是一件很麻烦的事。

这次就来研究一下Python远程调试如何实现,顺便理解gdb等远程调试的形式。为了方便索性将其他一些调试形式全记录在这里。

 

二、Windows图形界面IDE调试

当使用PyCharm等IDE进行调试时,直接使用在文件上右键,然后选择Debug ‘xxx’即可。这就不多说了。

可以看到PyCharm使用的是pydevd

 

 

三、Linux命令行调试实现

在命令行模式下,我们可以在程序中使用pdb.set_trace()实现类似下断点的操作,然后使用pdb运行程序在其交互shell中使用命令实现单步步过等调试操作。

(其实就观察来看,直接使用"python test.py"运行,当发现文件中有pdb.set_trace()时一样会以调试模式运行;这两者有一些感觉有一些还不是很确定的小差别,反正一种用着有毛病就换另一种。)

可在交互shell中使用“help”查看pdb支持的所有命令,可以使用“help command”进一下查看具体命令的作用。还可以直接查看官方文档。几个常用的命令如下:

s(tep)--单步步入

n(ext)--单步步过

c(ont(inue))--执行到下一断点处

l(ist)--打印当前语句上下文

p expression--打印变量值

q(uit)--退出

exit--退出

 

四、Windows+Linux远程开发调试实现

我们首先要明确,远程开发一定是将本地项目、传到远程机器、使用远程上的解析器执行。

所以我们要做的事,一是要实现将本地项目上传到远程机器,二是将远程机器上的解析器信息(如安装了哪些库)和程序执行输出等下载回本地。

一方面这些工作通过sftp等统一的一个协议就可以实现,另一方面在配置远程解析器时必需要设置远程解析器,所以整个工作在操作上就可归结为配置一个远程解析器一件事情。

前置条件:本地机器IDE需要是商业版本社区版不提供远程开发支持;远程机器开启ssh服务、确认用户可ssh、安装好python等。

第一步:打开要在远程机器上调试的项目。或者新建一个项目先随便选一个本地的解析器作为项目解析器。

第二步:通过菜单--setting,或者Ctrl+Alt+s快捷键呼出项目配置面板。

第三步:切换到Project--Project Interpreter,按如下操作添加远程解析器。

左侧切换到SSH Interpreter选项卡,右侧填好自己远程机器的ssh信息。

 设置好ssh凭证,可以是密码和密钥两种形式。我这里为了简便直接使用密码形式。

Interpreter----要使用的远程机器python解析器所在路径。默认是/usr/bin/python,可以改成自己安装的。

Execute code using .. sudo----使用sudo执行python命令。如果远程机器sudo需要输入密码那这种方式不好使。

Sync folders----项目上传到的文件夹。

Automatically upload ... ----每次运行程序前,如果文件有变更,则自动将文件同步到远程机器。强烈建议勾选。

 执行结果如下,本地项目成功上传到远程机器上,并能正常运行、调试。

 

参考:

https://www.cnblogs.com/shaowentao/p/10088300.html

posted on 2020-02-03 14:01  诸子流  阅读(1306)  评论(0编辑  收藏  举报