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远程调试服务器中的程序

目录

  • Vscode远程调试服务器中的程序
  • pudb远程调试服务器中的程序
  • 前言
  • 一、pudb能干什么?
    • 1. 优点
    • 2. 缺点
  • 二、建议什么样的人使用pudb?
  • 三、具体使用方法
    • 1.安装与使用
    • 2. 偏好调整
    • 3. 调试中会用到的操作
    • 4. 可能遇到的问题
  • 总结
    • 参考链接

前言

最近在写代码,但是对于刚入门不久的编程小白,服务器上的代码不能调试真是太痛苦了。之前用过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]     # 显示tracebackH - 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         # 当处于连续模式时,返回pudbCtrl-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/customh - 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破解版下载安装以及使用教程

Vscode,pudb远程调试服务器中的程序相关推荐

  1. intellij远程调试_IntelliJ中的远程调试Wildfly应用程序

    intellij远程调试 远程调试Java应用程序意味着使用本地开发环境连接到远程运行的应用程序. Java开箱即-agentlib:jdwp[=options]支持远程调试:目标应用程序必须使用-a ...

  2. win10+Xming+Xshell显示远程linux服务器的图形程序窗口

    Xshell的安装: Xshell的下载与使用 - 知乎 Xming的安装 1. 在bing页面搜索Xming,进入官网 2. 直接download 3. 下载完毕,点开安装包,直接按默认设置一路点击 ...

  3. 【调试】——idea远程调试服务器上的代码

    前提 有些时候难免会出现一些线上问题,可能就需要远程调试服务器上的代码,依次快速定位错误代码,进行改正.小编最近通过idea进行了远程代码调试,特此记录一下,希望可以帮需要的朋友. 步骤 1.保证本机 ...

  4. vscode初次远程连接服务器报错解决

    1.错误: vscode初次远程连接服务器无法连接成功报错,并弹框提示[关闭][更多操作][重试],这说明网络无法安装vscode-server服务. 2.解决办法: (1)  查看自己vscode的 ...

  5. Windows下如何使用VScode连接远程linux服务器进行远程开发

    Windows下如何使用VScode连接远程linux服务器进行远程开发 1. 先上手-成功连接 1.vscode下载安装所需插件:vscode中的remote-ssh插件 安装之后,就会出现上图黄色 ...

  6. 利用NAnt取得远程VSS服务器中的文件并且编译

    source:http://www.cnblogs.com/coolbug/archive/2004/07/21/26211.html 利用NAnt取得远程VSS服务器中的文件并且编译 利用NAnt取 ...

  7. vscode连接远程Linux服务器失败

    vscode连接远程Linux服务器失败 文章目录 vscode连接远程Linux服务器失败 解决连接失败 设置密钥免密登录 解决连接失败 问题 vscode会不断的提示你去输入密码,然后一直retr ...

  8. IDEA远程调试服务器代码

    先在idea添加一个remote,host填服务器ip,port填监听服务器端口,默认5005 然后在服务器tomcat catalina.sh 添加(红色部分): JAVA_OPTS="$ ...

  9. java远程调试服务器的工程配置

    废话就不多说了,干技术的 直接上干货.. 用tomcat做案例讲解. 保证服务器和客户端的代码一致性. 我的例子服务器是window的. 第一步: 在tomcat  bin目录下  创建文件, sta ...

最新文章

  1. osx java 6_OSX 10.11 java 6不兼容怎么办?OSX 10.11 java 6不兼容解决办法
  2. 【好程序员笔记分享】——UIView与CALayer详解
  3. 使用windowManager实现音乐播放器(悬浮框)效果
  4. 32位JDK和64位JDK
  5. Win32下 Qt与Lua交互使用(二):在Lua脚本中使用Qt类
  6. c++远征之多态篇——虚函数及其实现原理
  7. 图文讲解5G调制,特别通俗易懂!
  8. js change事件 获取新值和旧值_前端总结(JS篇)
  9. html点击文字展开图片,DIV CSS鼠标经过悬停在图片上时图片上方显示文字
  10. linux nload_Linux nload命令
  11. pdf类型转换器打印机
  12. 便宜又大碗!AI将画廊轻松搬到自家墙壁;用隐写术在图像中存储文件;免费书·算法高维鲁棒统计;关节式手部模型数据集;前沿论文 | ShowMeAI资讯日报
  13. linux多线程实验实验报告,Linux多线程实验.ppt
  14. 微信小程序地图点聚合
  15. Origin技巧:两个柱状图竖向重叠怎么办?
  16. C++多线程/互斥锁/条件变量/信号量思维很重要;设计线程安全队列;1114按序打印;1115交替打印FooBar;1116打印零与奇偶数;1117H2O 生成1195交替打印字符串1226哲学家进餐
  17. 数据库期末考试(考点以及相关概念整理)
  18. 什么是开环控制?什么是闭环控制?它们有什么区别?
  19. 移动端多页面APP(MPA)开发体验
  20. word换pdf并且自动生成目录

热门文章

  1. ByteBuffer.Allocate vs AllocateDirect
  2. 在职阿里6年,一个29岁女软件测试工程师的心声
  3. AlphaFold、嗜睡机制、量子通信荣获2023科学突破奖
  4. 将WLAN共享至以太网并传递
  5. 两个机器人的聊天记录
  6. 【渝粤教育】国家开放大学2019年春季 1025保险学概论 参考试题
  7. html5是万维网的核心语言,html5是什么语言
  8. SYN_RECV的意思
  9. 类的数据成员与成员函数
  10. 厦门大学考研真题笔记:334新闻与传播专业综合能力