Python远程调试图文教程(一)之Pycharm Remote Debug

最近有个小伙伴遇到一件很头疼的事。windows

公司的项目都在远程的服务器上,项目工程巨大,看源代码把本身都绕晕了,特别是Python这种动态语言。同时在本地写好了代码,同步代码也挺麻烦的,费了九牛二虎之力,终于把代码折腾到服务器上了,运行了下项目,扎心了,错漏百出,有些问题甚至还不知道问题出如今哪里,该怎么改。bash

对于这个问题,老司机固然是轻车熟路,我跟她说:远程调试,了解一下。服务器

她就去搜了一堆网文,跟着实践,到最后仍是没有解决。我看了她给我发的网文,确实写的有点乱。app

我看着我胸前的红领巾,我以为我应该担负起这个坚巨的任务,写下这个图文教程。工具

通常来讲,咱们熟悉的调试工具都是windows本地进行调试,可是咱们的项目运行极可能须要依赖远程服务器的特殊环境才能运行。这个时候,远程调试功能就是雪中送碳。this

正常Python的远程调试,会有两种比较主流的方式(就我知道的和使用过的)编码

  • pdbspa

  • Python Remote Debugdebug

这篇文章先来了解下Pycharm自带的远程调试工具。3d


本文目录

  • 新建一个工程

  • 链接远程服务器

  • 下载远程代码

  • 下载远程解释器

  • 添加程序入口

  • 调试前准备

  • 开始调试代码

  • 其余友情提示


. 新建一个工程

我这边的工程名是NOVA,请自行定义。

. 链接远程服务器

Tools -> Deployment -> configuration

添加一个Server
Name:请自行定义,我这里填我服务器的IP地址。
Type:请务必改为SFTP

点击OK后,进入以下界面,按个人备注,填写信息。

填写完成后,切换到Mappings选项卡,在箭头位置,填写\

以上服务器信息配置,所有正确填写完成后,点击OK

接下来,咱们要链接远程服务器了。
Tools -> Deployment -> Browse Remote Host

. 下载远程代码

若是以前填写的服务器登录信息准确无误的话,如今就能够看到远程的项目代码。

选择下载远程代码要本地。

下载完成提示。

如今的IDE界面应该是这样子的。

. 下载远程解释器

进入 File -> Settings
按图示,添加远程解释器。

填写远程服务器信息,跟以前的同样,再也不赘述。

点击OK后,会自动下载远程解释器。若是你的项目比较大,这个时间可能会比较久,请耐心等待。

. 添加程序入口

由于咱们要在本地DEBUG,因此你必定要知道你的项目的入口程序。若是这个入口程序已经包含在你的项目代码中,那么请略过这一步。

若是没有,就请本身生成入口程序。

好比,我本身的项目,在服务器上是以一个服务运行的。而咱们都知道服务的入口是Service文件
cat /usr/lib/systemd/system/openstack-nova-compute.service

[Unit]
Description=OpenStack Nova Compute Server
After=syslog.target network.target libvirtd.service

[Service]
Environment=LIBGUESTFS_ATTACH_METHOD=appliance
Type=notify
NotifyAccess=all
TimeoutStartSec=0
Restart=always
User=nova
ExecStart=/usr/bin/nova-compute

[Install]
WantedBy=multi-user.target
复制代码

看到那个ExecStart没有?那个就是咱们程序的入口。
咱们只要将其拷贝至咱们的Pycharm中,并向远程同步该文件。

. 调试前准备

开启代码自动同步,这样,咱们对代码的修改Pycharm都能识别,而且为咱们提交到远程服务器。

开启Gevent compatible,若是不开启,在调试过程当中,极可能出现没法调试,或者没法追踪/查看变量等问题。
对于这个设置,官方解释是这样的,我没有看懂。

If this checkbox is selected, the debugger will be compatible with the Gevent-monkeypatched code.

. 开始调试代码

在你的程序入口文件处,点击右键,选择Debug便可。

若是你的程序入口,须要引入参数,这是常常有的事,能够的这里配置。



配置完点击保存便可。


. 其余友情提示

  • 调试代码因为会自动同步代码,请不要在生产环境使用,必定要在开发环境中使用,不然后果自负。

  • 调试虽好,但请不要过分依赖。尽可能在每次写代码的时候,都追求一次成型,提升本身的编码能力。

                                 
                                         首发于公众号,扫码关注获取更多干货!
相关文章
相关标签/搜索