Python调试工具
1. 日志
通过日志或者print来打印变量。必要时可以打印locals()
和globals()
建议使用logging.debug()来代替print,这样到了正式环境,就可以统一删除这些日志。
2.trace
Python有个trace模式,可以打印整个程序的执行流
# encoding=utf8
def f():
print 'aa'
if __name__ == '__main__':
f()
例如这段简单的程序,执行python -mtrace --trace test.py
就会输出下面的日志:
--- modulename: test, funcname: <module> # test模块,module级函数
test.py(2): def f(): #test.py的第2行,执行def f命令定义函数
test.py(6): if __name__ == '__main__':
test.py(7): f()
--- modulename: test, funcname: f
test.py(3): print 'aa'
aa
--- modulename: trace, funcname: _unsettrace
trace.py(80): sys.settrace(None)
可以详细得看到这代代码在Python中的执行流程。
当代码比较复杂,例如调用了一些第三方库,这个trace日志就会非常多,所以最好重定向到一个文件里面,慢慢分析。
3.PDB
# encoding=utf8
import pdb
def f2():
a = 1
pdb.set_trace() # 设置断点
b = 2
c = a + b
pdb.set_trace()
if __name__ == '__main__':
f2()
在代码里面设置断点。执行代码python -mpdb test.py
,就可以调试程序了。进程会在断点处暂停运行,等待我们执行命令
(vsing_env) [root@www script]# python -mpdb test.py
> /data/selfmoe_backend/script/test.py(2)<module>()
-> import pdb
(Pdb) c
> /data/selfmoe_backend/script/test.py(13)f2()
-> b=2
(Pdb) p a
1
(Pdb) l
8 cli=redis.Redis(host='127.0.0.1',port='6801')
9 cli.get('test')
10 def f2():
11 a=1
12 pdb.set_trace()
13 -> b=2
14 c=a+b
15 pdb.set_trace()
16 if __name__ == '__main__':
17 f2()
[EOF]
断点处可以执行的命令有:
- c continue 继续
- q quit 退出
- l list 显示断点前后的源码
- w or where 回溯执行到当前断点的过程
- d down 回溯的下一页
- u up 回溯的上一页
- 回车 重复最后一个命令,例如就不用一直按c,可以只按回车
其他分支
- ipdb pdb的基础上增加颜色,自动补齐
- pudb gui版本
- winpdb 远程调试,在windows调试linux的进程
上面几个库的接口和pdb都是一样的。
4.Pycharm
使用Pycharm这个IDE进行调试。这个功能就比较强大了。
Pycharm也支持远程调试。也就是在windows界面操作,进程运行在linux。
方法是:
- 在
Settings-Project Interpreter
里面点击Project Interpreter
右边的配置,点击Add - 选择
SSH Interpreter
- 如果已有远程同步代码配置,就选择
Existing Server configuration
- 否则就选择
New server configuration
,设置远程机的IP和ssh端口和用户名,密码等 - 设置远程机的Python地址,例如
/data/env/bin/python
- 设置
Sync folders
。这个是windows和远程机的目录映射,例如E://project
映射到/data/project
。那如果执行E://project/test.py
脚本就相当于执行/data/project/test.py
脚本 - 创建测试的脚本,
test.py
- 打开
Run-Edit Configurations
,修改test.py
的Python interpreter
为刚才设置的Remote Python
- 点击
run test.py
就能在远程机执行这个脚本了,console会展示远程机的console - 除了run,也可以debug
参考:
Python调试工具
Python调试工具的更多相关文章
- 我常用的 Python 调试工具 - 博客 - 伯乐在线
.ckrating_highly_rated {background-color:#FFFFCC !important;} .ckrating_poorly_rated {opacity:0.6;fi ...
- python调试工具pdb
pdb是基于命令行的调试工具,非常类似gnu的gdb(调试c/c++). 命令 简写命令 作用 break b 设置断点 continue c 继续执行程序 list l 查看当前行的代码段 step ...
- Python调试工具-Spyder
OS:Windows 7 关键字:Python IDE, Spyder 1.安装工具pip:https://pip.pypa.io/en/latest/installing.html 下载 get-p ...
- 常用的 Python 调试工具,Python开发必读-乾颐堂
以下是我做调试或分析时用过的工具的一个概览.如果你知道有更好的工具,请在评论中留言,可以不用很完整的介绍. 日志 没错,就是日志.再多强调在你的应用里保留足量的日志的重要性也不为过.你应当对重要的内容 ...
- Python 调试工具PySnooper
相信很多小伙伴平时写python的时候都是需要调试程序的,出问题了,需要了解函数内部是怎么跑的,而这个时候很多人都会想到在疑惑的地方使用print函数来打印一下参数来调试.虽然用print也是不失为是 ...
- python调试工具remote_pdb
介绍一个调试python代码的工具:remote_pdb https://pypi.org/project/remote-pdb/ 安装 pip install remote-pdb 使用 1,设置断 ...
- python 调试工具
https://github.com/what-studio/profiling http://blog.jobbole.com/51062/ http://blog.jobbole.com/5209 ...
- python调试工具----pycharm快捷键及一些常用设置
pycharm快捷键及一些常用设置 Alt+Enter 自动添加包Ctrl+t SVN更新Ctrl+k SVN提交Ctrl + / 注释(取消注释)选择的行Ctrl+Shift+F 高级查找Ctrl+ ...
- 一个牛逼的 Python 调试工具PySnooper
原文转自:https://mp.weixin.qq.com/s/OtLr-cNethboMgmCcUx2pA PySnooper 使用起来十分简单,开发者可以在任何庞大的代码库中使用它,而无需进行任何 ...
随机推荐
- .NET Core 3.0 可卸载程序集原理简析
因为最近在群里被问到如何理解 .NET Core 3.0 可卸载程序集,所以就写了这篇简单的分析. 因为时间实在很少,这篇文章只简单的罗列了相关的代码,请配合官方说明文档理解. 另外,书籍<.N ...
- Android_基于监听的事件处理机制
一.引言 在经过几天的学习之后, 首先熟悉了几大基本布局以及一些常用控件的使用方法,目前正在学习如何实现一个基本的登录注册界面及其功能,而实现功能就需要我们采用事件处理机制来进行调用事件处理方法.以下 ...
- linux下安装配置go语言环境
1,golang中国下载go源码 http://www.golangtc.com/download 请对应系统版本号,linux-amd64.tar.gz为64位系统(推荐) ,linux-386 ...
- Flutter学习笔记(29)--Flutter如何与native进行通信
如需转载,请注明出处:Flutter学习笔记(29)--Flutter如何与native进行通信 前言:在我们开发Flutter项目的时候,难免会遇到需要调用native api或者是其他的情况,这时 ...
- 03 python基础作业(一)
1.将['alex','eric',’rain’]用下划线拼接成字符串.(['alex','eric',123]呢?) li=['alex','eric','rain'] v='_'.join(li) ...
- springboot结合jpa
idea中新建springboot项目,引入spring-boot-starter-data-jpa依赖 application.yml中配置数据库连接,示例如下: spring: datasourc ...
- centos7编译安装LNMP(nginx-1.16.0,mysql8.0.16,php-7.3.6)常见问题报错及解决方法
LNMP的安装与配置 nginx-1.16.0安装及配置: 第一步:前往官网下载nignx源码包 下载完毕后上传至服务器(先安装lrzsz) yum -y install lrzsz 安装完毕后执行: ...
- SpringCloud教程一:eureka注册中心(Finchley版)
一.spring cloud简介 本阶段学习教程Spring Boot版本2.0.3.RELEASE,Spring Cloud版本为Finchley.RELEASE. Finchley版本的官方文档如 ...
- VMware15.5版本下安装Windows_Server_2008_R2
一.新建虚拟机 第一步:打开VMware15.5虚拟机,在欢迎界面点击新建虚拟机: 第二步:选择典型(推荐)选项-->适用于新手,单击下一步: 第三步:选定最后一项稍后安装操作系统,单击下一步: ...
- ASP.NET Core API ——Dapper的使用
ASP.NET Core API ——Dapper的使用 简介:Dapper是一个ORM框架,负责数据库和程序语言之间的映射. 使用步骤: l 创建一个IDBConnection的接口对象 l 编 ...