Vscode远程调试服务器中的程序
VScode可以远程调试服务器中的代码,应该适合更多的人。
请参考:成功解决 vscode远程调试python 请注意第三步的时候,如果你的端口号不是默认22,就需要重新设置,点击下图的齿轮,出现config文件。
然后增添Port <你的端口号> 就好了。Host 可以改成你的服务器的名字。
还有重要的一点上面的链接没有指出来,就是第五步之后要进行代码调试的话,需要按照下图设置:
也可参考:VS Code进行Python远程调试 自己遇到的问题:
- 连上了服务器,也打开了服务器中的文件,但是不能加断点,就是点代码前面不会出现红点。这是因为python扩展没有安装好,在扩展中搜索python,然后安装,稍微久一点。
- python没有办法利用ctrl+左键跳转,安装扩展Pylance,进入设置(左下角小齿轮),python:language server改成pylance就可以了,如果不行可以重启试试。
- 调试的时候总是报错:time out waiting for launcher,参考这里把console改为internalConsole,默认的是integratedTerminal,而且网上很多的博客都是设定的默认,目前不知道为什么,但是改了确实好了。
- 如果要用到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] # 显示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下载安装以及使用教程