https://segmentfault.com/q/1010000005067119

问题对人有帮助,内容完整,我也想知道答案0问题没有实际价值,缺少关键内容,没有改进余地

[问题描述]
以前均是使用Pycharm调试远程Linux上的代码, 但是今天偶然看到同事使用pdb在服务器端调试, 颇觉有趣, 自己也试了试, 发觉竟然也是相当高效(以前以为用pdb是手工作坊), (也有可能是pdb的简洁给我带来了这种感觉)

使用Pycharm调试, 可能想到的其背景是一个项目(并且是正规的有规模的), 其步骤可能也会是繁琐的:

  1. 本地Pycharm打断点

  2. 同步代码至服务器(这点无问题,可以自动同步)

  3. 开始调试
    GUI带来的便利性毋庸置疑, 但是调试范围有局限, 仅限于此项目目录下的py文件, 因为Pycharm只与远程Linux下的此目录做了对应

使用pdb,则很灵活, 随时跑到某py文件中,写上pdb的调试代码, 然后运行,即可调试. 缺点是:

  1. 手动打断点

  2. 多个文件断点, 工作量颇多

  3. 还要自己一一删除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调试高效? (在服务端)的更多相关文章

  1. 转载 ----HTML5 ---js实现json方式提交数据到服务端

    json提交给服务器我们在提交之前需要通过js的相关函数来把数据转换成json格式的数据再进行post或get了,下面来看看.   大概需求就是前端要把数据组装成json,传给后端.首先,在客户端,通 ...

  2. pdb 调试

    以前写python一直用pycharm,调试啥的比较方便,最近要在远程服务器上调试一些程序,只有一个控制台就可以用pdb进行调试了.常用的只有几个命令. break 或 b 设置断点 continue ...

  3. Python 代码使用pdb调试技巧

    Debug 对于任何开发人员都是一项非常重要的技能,它能够帮助我们准确的定位错误,发现程序中的 bug.python 提供了一系列 debug 的工具和包,可供我们选择.本文将主要阐述如何利用 pyt ...

  4. 使用PyCharm实现远程编写并调试代码

    使用PyCharm实现远程编写并调试代码 版权声明:本文为博主原创文章,转载请注明出https://www.cnblogs.com/wenqiangit/p/9771947.html 因为工作中使用的 ...

  5. Python PDB调试处理

    pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点.单步调试.进入函数调试.查看当前代码.查看栈片段.动态改变变量的值等.pdb 提供了 ...

  6. gdb可以调试python的pdb么

    1.如题: gdb可以调试python的pdb么? 答案:可以,实验如下. 2.实验: 生成一个a.py代码文件,代码如下: import pdb a = 1 print "111" ...

  7. 【转载】Windows下VSCode编译调试c/c++

    懒得自己配置或自己配置出现不明问题的朋友可以点这里: [VSCode]Windows下VSCode便携式c/c++环境 http://blog.csdn.net/c_duoduo/article/de ...

  8. python pdb调试

    在交互环境中通常使用pdb.run来调试: import pdb def pdb_test(arg): for i in range(arg): print(i) return arg pdb.run ...

  9. python pdb调试模块使用

    一般在需要调试的文件加入下面代码即可 ################ _DEBUG = True ... if _DEBUG == True import pdb pdb.set_trace() # ...

随机推荐

  1. GitlabCI/CD&Kubernetes项目交付流水线实践

    GitlabCI实践 GitLabCI/CD基础概念 为什么要做CI/CD? GitLab CI/CD简介 GitLabCI VS Jenkins 安装部署GitLab服务 GitLabRunner实 ...

  2. electron项目踩坑--A JavaScript error occurred in the main process:document is not defined

    前言 记录electron-vue项目开发中遇到的一个错误,运行时报错如图: 控制台报错如下: ReferenceError: document is not defined at Object.&l ...

  3. 简单的介绍一下Java设计模式:解释器模式

    目录 定义 意图 主要解决问题 优缺点 结构 示例 适用情况 定义 解释器模式是类的行为型模式,给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器,客户端可以使用这个解释器来 ...

  4. FusionInsight MRS:你的大数据“管家”

    摘要:4月24日-26日,HDC.Cloud2021在深圳大学城成功举办,华为云FusionInsight MRS云原生数据湖带来最懂行的大数据解决方案,为政企客户提供湖仓一体.云原生的大数据解决方案 ...

  5. python set 一些用法

    add(增加元素) name = set(['Tom','Lucy','Ben']) name.add('Juny') print(name)#输出:{'Lucy', 'Juny', 'Ben', ' ...

  6. spring boot 集成logstash 日志

    1.logstash 插件配置 logstash下config文件夹下添加 test.conf 文件内容: input{ tcp { mode => "server" hos ...

  7. Mysql通配符的使用

    通配符的分类:%百分号通配符: 匹配任意字符,包括0个到多个_下划线通配符:表示只能匹配单个字符,不能多也不能少,就是一个字符.    escape:用来转义特定字符 [字符列]  :字符列中任何一个 ...

  8. reset 去掉margin和padding的 默认代码,其余根据自己的情况做调整

    body, dl, dd, h2, h3, h4, h5, h6, p, form{margin:0;} ol,li,ul{margin:0; padding:0;} h1{margin:10px 0 ...

  9. 010 Editor体验

    源代码的我们现在拥有各式各样的IDE和编辑器可以去查看,但二进制文件对于大多数软件只能做到显示16进制,而不能按照文件类型的格式去显示.今天我们就用dex文件让010 show. 安装软件: http ...

  10. 利用 ROP 技术绕过 DEP 保护的一次简单尝试

    \x 01 前言 DEP是数据执行保护的英文缩写,全称为Data Execution Prevention.数据执行保护(DEP) 是一套软硬件技术,能够在内存上执行额外检查以帮助防止在系统上运行恶意 ...