[问题描述]
以前均是使用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实现,加大调试难度,所以特别复杂的场景我是用日志的。