【转载】Pycharm调试高效,还是pdb调试高效? (在服务端)
https://segmentfault.com/q/1010000005067119
[问题描述]
以前均是使用Pycharm调试远程Linux上的代码, 但是今天偶然看到同事使用pdb在服务器端调试, 颇觉有趣, 自己也试了试, 发觉竟然也是相当高效(以前以为用pdb是手工作坊), (也有可能是pdb的简洁给我带来了这种感觉)
使用Pycharm调试, 可能想到的其背景是一个项目(并且是正规的有规模的), 其步骤可能也会是繁琐的:
本地Pycharm打断点
同步代码至服务器(这点无问题,可以自动同步)
开始调试
GUI带来的便利性毋庸置疑, 但是调试范围有局限, 仅限于此项目目录下的py文件, 因为Pycharm只与远程Linux下的此目录做了对应
使用pdb,则很灵活, 随时跑到某py文件中,写上pdb的调试代码, 然后运行,即可调试. 缺点是:
手动打断点
多个文件断点, 工作量颇多
还要自己一一删除pdb代码, 有点麻烦
为什么问此问题呢?
由上可知, 我以前并没有使用过pdb, 今天也只是粗略使用, 所以见树木不见森林也是正常. 但是我觉得pdb应该可以用得更好
[问题简化]
实用高效的pdb调试技巧
如果你认为pdb肯定在服务端比pycharm高效,那google搜搜pdb的教程和技巧,应该会有很多干货,所以我这里就不写pdb有多好了,从我的角度来说,我工作的99.99%的问题都可以用pycharm解决,所以我还是结合场景来说说pycharm是如何适应我的开发的。
1) pycharm不但能调试本地代码,也支持remote debug的。
2) pycharm的调试模式在5.0之后,支持attach的模式,这个据我所知,应该是很领先的。
意外着你可以对运行中的python程序进行调试,处理,发现其中的问题,而无需以调试模式从头调到尾。
3) 针对CPython的特点,特别复杂的场景,其实各种pdb或debugger都是无效的,因为底层有一个C实现,加大调试难度,所以特别复杂的场景我是用日志的。
【转载】Pycharm调试高效,还是pdb调试高效? (在服务端)的更多相关文章
- 转载 ----HTML5 ---js实现json方式提交数据到服务端
json提交给服务器我们在提交之前需要通过js的相关函数来把数据转换成json格式的数据再进行post或get了,下面来看看. 大概需求就是前端要把数据组装成json,传给后端.首先,在客户端,通 ...
- pdb 调试
以前写python一直用pycharm,调试啥的比较方便,最近要在远程服务器上调试一些程序,只有一个控制台就可以用pdb进行调试了.常用的只有几个命令. break 或 b 设置断点 continue ...
- Python 代码使用pdb调试技巧
Debug 对于任何开发人员都是一项非常重要的技能,它能够帮助我们准确的定位错误,发现程序中的 bug.python 提供了一系列 debug 的工具和包,可供我们选择.本文将主要阐述如何利用 pyt ...
- 使用PyCharm实现远程编写并调试代码
使用PyCharm实现远程编写并调试代码 版权声明:本文为博主原创文章,转载请注明出https://www.cnblogs.com/wenqiangit/p/9771947.html 因为工作中使用的 ...
- Python PDB调试处理
pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点.单步调试.进入函数调试.查看当前代码.查看栈片段.动态改变变量的值等.pdb 提供了 ...
- gdb可以调试python的pdb么
1.如题: gdb可以调试python的pdb么? 答案:可以,实验如下. 2.实验: 生成一个a.py代码文件,代码如下: import pdb a = 1 print "111" ...
- 【转载】Windows下VSCode编译调试c/c++
懒得自己配置或自己配置出现不明问题的朋友可以点这里: [VSCode]Windows下VSCode便携式c/c++环境 http://blog.csdn.net/c_duoduo/article/de ...
- python pdb调试
在交互环境中通常使用pdb.run来调试: import pdb def pdb_test(arg): for i in range(arg): print(i) return arg pdb.run ...
- python pdb调试模块使用
一般在需要调试的文件加入下面代码即可 ################ _DEBUG = True ... if _DEBUG == True import pdb pdb.set_trace() # ...
随机推荐
- K8S单集群桌面安装笔记【k8s-for-docker-desktop】
一.K8S集群基本的拓扑结构 二.下载 k8s-for-docker-desktop k8s桌面单集群安装,基本上选择 k8s-for-docker-desktop或者minikube两类,本文采用前 ...
- UnboundLocalError: local variable 'foo' referenced before assignment Python常见错误
在定义局部变量前在函数中使用局部变量(此时有与局部变量同名的全局变量存在) 在函数中使用局部变来那个而同时又存在同名全局变量时是很复杂的, 使用规则:如果在函数中定义了任何东西,如果它只是在函数中使用 ...
- Logstash生产环境实践手册(含grok规则示例和ELKF应用场景)
ELKF应用场景: 1) datasource->logstash->elasticsearch->kibana 2) datasource->filebeat->log ...
- Dynamics CRM使用JS隐藏自定义按钮
在我们平时客制化开发的时候会经常遇到要制作自定义按钮的情况,而这个自定义按钮的功能又经常会有一些隐藏逻辑需要实现,所以每次通过获取控件查找这个按钮再隐藏比较麻烦,而且偶尔会出现代码没起作用的效果.下面 ...
- Java(25-40)【数据类型转换、运算符、方法入门】
1.ASCII编码表 0--48 A--65 a--97 2. Unicode万国码 字符'中'为20013 3.算数运算符 double类型的加上int类型结果为double byte short ...
- 使用VS Code从零开始开发调试.NET 5
使用VS Code 从零开始开发调试.NET 5.无需安装VS 2019即可开发调试.NET 5应用. VS Code 全称是 Visual Studio Code,Visual Studio Cod ...
- 黑马 - poi Excel
3.poi入门操作 3.1 搭建环境 1 <dependency> 2 <groupId>org.apache.poi</groupId> 3 <artifa ...
- Go-41-回调
回调函数,函数有一个参数是函数类型,这个函数就是回调函数 回调函数,可以实现多态,即调用同一个接口,不同的表现,可以实现不同表现 package main import "fmt" ...
- 码农飞升记-00-Java发展历程
目录 1.Java发布历程 2.Java发展史 Oak 的出现( Java 的雏形) 1995年 Java 的诞生 1996年 Sun 公司发布第一个 JDK 1998年12月用 J2SE 取代 JD ...
- Laravel 定时任务 任务调度 可手动执行
1.创建一个命令 php artisan make:command TestCommand 执行成功后会提示: Console command created successfully. 生成了一个新 ...