Vscode,pudb远程调试服务器中的程序

Vscode远程调试服务器中的程序

VScode可以远程调试服务器中的代码,应该适合更多的人。
请参考:成功解决 vscode远程调试python
请注意第三步的时候,如果你的端口号不是默认22,就需要重新设置,点击下图的齿轮,出现config文件。
在这里插入图片描述
然后增添Port <你的端口号> 就好了。Host 可以改成你的服务器的名字。
在这里插入图片描述
还有重要的一点上面的链接没有指出来,就是第五步之后要进行代码调试的话,需要按照下图设置:
在这里插入图片描述

也可参考:VS Code进行Python远程调试
自己遇到的问题:

  1. 连上了服务器,也打开了服务器中的文件,但是不能加断点,就是点代码前面不会出现红点。这是因为python扩展没有安装好,在扩展中搜索python,然后安装,稍微久一点。
  2. python没有办法利用ctrl+左键跳转,安装扩展Pylance,进入设置(左下角小齿轮),python:language server改成pylance就可以了,如果不行可以重启试试。
  3. 调试的时候总是报错:time out waiting for launcher,参考这里把console改为internalConsole,默认的是integratedTerminal,而且网上很多的博客都是设定的默认,目前不知道为什么,但是改了确实好了。
  4. 如果要用到ptvsd,注意launch.json的host后的ip地址要带上双引号。

pudb远程调试服务器中的程序


前言

最近在写代码,但是对于刚入门不久的编程小白,服务器上的代码不能调试真是太痛苦了。之前用过pycharm调试,但是因为要设置环境,mapping什么的,运行代码一多,环境比较多的时候,总是出问题,而且tensorflow出问题更多。幸好在大佬的指点下,我知道了pudb能远程调试,而且它本身不需要下额外的软件,只需要pip装一个包就好,然后你就有一个类似于matlab的调试界面了。

一、pudb能干什么?

pudb是全屏的基于控制台的可视化调试器。

  • 可设置断点,解决了服务器难以调试的问题,和pycharm的本地调试断点一样。
  • 基于键盘,简单高效。为什么说高效呢?因为它支持VI的鼠标移动。
  • 支持查找源代码,可以使用m代用module browser查看载入的模块。
  • 可以进入调用模块的源代码,适用于一些框架比较大,结构比较复杂的代码。

1. 优点

  • 不会遇到mapping之类的问题,只要相应的环境配置好,就可以调试,比较稳定
  • 界面简单,满足日常调试需求

2. 缺点

  • 全程用键盘操作,一开始会有点不太适应
  • 不能用鼠标,不能使用类似于Ctrl+左键的模块的索引方式
  • 不能直接编辑代码,可以配合pycharm之类的工具编辑代码。所以两个屏更方便。

二、建议什么样的人使用pudb?

  • 需要用服务器调试代码
  • python入门者

三、具体使用方法

准备工作:使用pycharm把环境映射好,也就是setting里面设置好。并且点上自动upload的选项。这样pycahrm里改完之后,服务器更新了,Xshell这边重新开启调试也会修改。

1.安装与使用

安装:pip install pudb
使用:python -m pudb.run main.py
或者 pudb main.py(这个我用了会有问题)

2. 偏好调整

第一次使用的界面是这样的:
在这里插入图片描述
嗯。。。看过都说丑的界面。先把它换成我们熟悉的配色:点击ctrl+p,然后光标往下移,看到Theme,然后把光标移到midnight,点enter。就换成我们熟悉的配色。再加上页码,在General部分,光标移到show line numbers, 点enter。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
配色换好之后我们再来看组成,由五个部分组成,代码,命令行,变量模块,运行模块,以及断点模块。对于日常调试这些就够了,剩下的使用键盘操作就可以,鼠标在这里就没有什么作用啦。

3. 调试中会用到的操作

  • 更换光标所在模块:利用键盘的上下左右键转换光标所在的模块,从【代码】-【命令行】使用ctrl+x进行更换。或者大写模式下,按:V - 移到变量部分,S - 移到运行模块部分, B - 移到断点部分, C - 移到代码部分;

  • 设置和删除断点:将光标放到所在行,按b,注意是小写;再按一次b就删除断点了

  • 编辑断点:聚焦到断点部分,光标放到要编辑的断点处,按e

  • 运行到下一行:n

  • 运行到下一个断点处:t

  • 进入调用的模块的源代码:s

  • 运行完当前函数并跳出:r/f

  • 查看变量:聚焦到变量部分,想看哪个变量,enter就行

  • 进入终端:o

  • 跳出终端回到调试界面:enter

  • 终止代码:q

  • 翻页:pagedown 和 pageup,或Ctrl+u/d

  • 跳转到首行/末行 g/G - start/end

  • 跳到指定行 L

  • 查找:/ ,之后按下进入代码部分,,/.分别进行上一个/下一个查找

  • 窗口分布调整:shift + -/+

这些就是我最近使用pudb调试经常使用的操作。如果你有其他的需要,按shift+?就可以看到所有的指令。下面是其他博主翻译的,可以作为参考:

Welcome to PuDB, the Python Urwid debugger.                                           
-------------------------------------------                                           
                                                                                      
(This help screen is scrollable. Hit Page Down to see more.)                          
                                                                                      
Keys:                                                          # 快捷键相关
    Ctrl-p - edit preferences                                  # 编辑配置
                                                                                      
    n - step over ("next")                                     # 运行到下一行                       
    s - step into                                              # 运行进函数
    c - continue                                               # 继续运行
    r/f - finish current function                              # 结束当前函数
    t - run to cursor                                          # 运行到光标处
    e - show traceback [post-mortem or in exception state]     # 显示traceback

    H - move to current line (bottom of stack)                 # 移动到当前行(栈底)
    u - move up one stack frame                                # 移动到栈的上一行
    d - move down one stack frame                              # 移动到栈的下一行
                                                               
    o - show console/output screen                             # 显示命令行屏幕(回车返回pudb)

    b - toggle breakpoint                                      # 打断点/取消断点
    m - open module                                            # 打开python模块

    j/k - up/down                                              # 上/下
    Ctrl-u/d - page up/down                                    # 上一页/下一页
    h/l - scroll left/right                                    # 左滚动/右滚动
    g/G - start/end                                            # 跳转到首行/末行
    L - show (file/line) location / go to line                 # 跳到指定行
    / - search                                                 # 查找
    ,/. - search next/previous                                 # 查找下一个/上一个

    V - focus variables                                        # 聚焦在变量窗口
    S - focus stack                                            # 聚焦在栈窗口
    B - focus breakpoint list                                  # 聚焦在断点列表窗口
    C - focus code                                             # 聚焦在代码窗口
                      
    f1/?/H - show this help screen                             # 显示帮助窗口
    q - quit                                                   # 退出

    Ctrl-c - when in continue mode, break back to PuDB         # 当处于连续模式时,返回pudb

    Ctrl-l - redraw screen                                     # 重绘窗口
                                                                                      
Command line-related:                                          # 命令行相关
    ! - invoke configured python command line in current environment            # 进入命令行窗口
    Ctrl-x - toggle inline command line focus                                   # 切换命令行窗口和代码窗口

    +/- - grow/shrink inline command line (active in command line history)      # 增长/缩减命令行(命令行历史下激活)
    _/= - minimize/maximize inline command line (active in command line history)# 最小化/最大化命令行(命令行历史下激活)
                                                                                      
    Ctrl-v - insert newline                                    # 插入新行
    Ctrl-n/p - browse command line history                     # 浏览命令行历史
    Tab - yes, there is (simple) tab completion                # 快速补齐

Sidebar-related (active in sidebar):                           # 工具栏相关(工具栏激活时有效)
    +/- - grow/shrink sidebar                                  # 扩大/缩减工具栏(指的是工具栏宽度)
    _/= - minimize/maximize sidebar                            # 最小化/最大化工具栏
    [/] - grow/shrink relative size of active sidebar box      # 扩大/缩减激活工具栏相对大小(指的是窗口高度)
                  
Keys in variables list:                                        # 变量列表窗口的快捷键
    \ - expand/collapse                                        # 展开/收缩
    t/r/s/c - show type/repr/str/custom for this variable      # 切换type/repr/str/custom
    h - toggle highlighting                                    # 切换高亮
    @ - toggle repetition at top                               # 切换顶部重复
    * - cycle attribute visibility: public/_private/__dunder__ # 属性的循环可视化
    m - toggle method visibility                               # 切换方法的可见性
    w - toggle line wrapping                                   # 切换换行
    n/insert - add new watch expression                        # 添加新的watch表达式
    enter - edit options (also to delete)                      # 编辑选项

Keys in stack list:                                            # 栈列表窗口的快捷键

    enter - jump to frame                                      # 跳到某帧

Keys in breakpoints view:                                      # 断点列表窗口的快捷键

    enter - edit breakpoint                                    # 编辑断点
    d - delete breakpoint                                      # 删除断点
    e - enable/disable breakpoint                              # 启用/禁用断点

4. 可能遇到的问题

  • q->restart之后代码看起来更新了,但是有可能实际没有更新。这时候需要q->quit才管用,不然没有更新。这个问题我遇到了很多次。

总结

本文介绍了如何使用pudb对服务器中的代码进行调试。它的优点在于稳定性和界面简洁,所以推荐大家使用。

参考链接

pudb使用指南
[笔记]Python的调试器pudb简易教程

xshell+xftp破解版下载安装以及使用教程

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值