python调试_Python调试坑

写python的人一般都不太看重调试, 因为这是一门解释性语言, 在哪出错会立马在解释器里提示出来。但是, 以上观点只适用于小的脚本或者项目。因为我在接触目前项目之前, 我一直都是这么做的。

对于一个大的项目来说, 调试就不能这么做了, 这种大项目通常都是多进程或者多线程, 普通的调试基本没办法。通常会通过记录日志来调试, 记录日志。。这里就是我想说得一个坑。正常的项目里面都会有容错处理, 也就是各种try...except, 然后把抛出的异常写到日志, 出错的时候就可以通过看错误日志去定位信息。 但是, 抛出的异常通常只是一句话, 无法得到具体的错误代码行, 这在一个模块比较多的项目里简直就是噩梦, 你可能要花费很多时间去定位错误所在地方, 效率极其低下。 肿么办呢, python里面有一个模块叫traceback, 这个模块是干嘛的呢, 请看官方解释:This module provides a standard interface to extract, format and print stack traces of Python programs. It exactly mimics the behavior of the Python interpreter when it prints a stack trace. This is useful when you want to print stack traces under program control, such as in a “wrapper” around the interpreter.

也就是说, 这个模块就像一个缩小版的解释器一样, 可以跟踪代码运行栈。 简单来说, 可以看到代码详细出错信息, 包括在哪出错。怎么用呢, 就说一种用法, 我觉得够用了:import traceback

try:1/0

except Exception as e:traceback.print_exc(file=open('/tmp/error', 'wb'))

这样程序在抛出异常后, 就会将出错信息写到'/tmp/error'这个文件中, just enjoy it!

另外要说的一种方法是logging模块中用到的方法。

对于大型项目而言,用logging模块调试是一种更好的方法,日志集中管理。

要使用日志,首先要声明一个logger,具体怎么声明这里不再赘述,参见python官方文档或者google。

效果和traceback一样,代码如下:try:1/0

except Exception as e:logger.exception(e)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/311656.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[蓝桥杯]字符串对比-模拟

题目描述 给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4中情况之一:   1:两个字符串长度不等。比如 Beijing 和 Hebei   2:两个字符串不仅长度相等,而且相应位置上的字符…

word List 42

word List 42 如果存在什么问题,欢迎批评指正!谢谢!

利用AppMetrics对Web进行监控教程

一、基础准备1. 安装依赖这里可以通过nuget或使用命令行进行安装,具体需要安装的类库如下(注意版本):Install-Package App.Metrics.AspNetCore.Mvc -Version 2.0.0由于我们需要兼容Prometheus进行监控,所以我们还需要安…

matlab贝叶斯优化工具箱_经济学人的神器——BEAR(贝叶斯估计、分析和回归工具包)...

武林至尊,宝刀屠龙,号令天下,莫敢不从,倚天不出,谁与争锋。——金庸《倚天屠龙记》Bayesian Estimation, Analysis and Regression(简写为BEAR) Toolbox是欧央行(ECB)发布的一个综合 (面板)VAR工具箱,通过图…

[蓝桥杯2017决赛]平方十位数-枚举+set去重

题目描述 由0~9这10个数字不重复、不遗漏,可以组成很多10位数字。 这其中也有很多恰好是平方数(是某个数的平方)。 比如:1026753849,就是其中最小的一个平方数。 请你找出其中最大的一个平方数是多少? 输出…

计算机网络----wireshark抓包

计算机网络----wireshark抓包 抓包截图: 先了解,后期将细讲!!! 如果存在什么问题,欢迎批评指正!谢谢!

如何为.NETCore安装汉化包智能感知

引言具体不记得是在群里还是什么地方有人问过,.NETCore有没有汉化包,答案是有,目前微软已经为我们提供了.NETCore多种语言的语言包。下面看看如何安装与使用吧。本文介绍:如何安装这些下载的本地化版本。如何修改Visual Studio安装…

python对浏览器的常用操作_selenium+python基本操作(02)

前言 前一章节已经完成环境搭建,下面简单介绍下对浏览器的基本操作,让大家先了解一些简单的操作。这节主要介绍浏览器打开、刷新、前进、后退、截图、退出等功能。 1)打开浏览器 from selenium import webdriver #导入webdriver模块 driver …

[召集令]-Dijkstra的单源最短路径算法

2021.3.10 题目背景 墨家家主发出召集令&#xff0c;所有弟子得迅速到指定地点集合。 题目描述 给定一张地图&#xff0c;含有n个地点(n<10000)&#xff0c;地点从1开始编号&#xff0c;地图上还含有m条单向路(m<100000)连接着这些地点&#xff0c;墨家家主在1号位置&am…

word List 43

word List 43 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢&#xff01;

小微技术团队的DevOps体系折腾之路(顺带发布52ABP新版本)

加个“星标★”&#xff0c;好文必达&#xff01;本想纯粹说下52ABP新版本发布&#xff0c;但是写着写着,过去的时间更多折腾的是DevOps体系的建设。这篇同样适用于小公司或者个人开发者脱离人肉运维的方法。说下52ABP&#xff0c;我们发布了新版本&#xff0c;版本号3.1.0&…

python递归创建目录_Node.js和Python使用递归查看目录文件和创建目录

1. 查看目录文件: 1.1 Node实现&#xff1a; let fs require(fs); let path require(path); let filePath path.resolve(D:); fileDisplay(filePath); function fileDisplay(filePath){ //根据文件路径读取文件&#xff0c;返回文件列表 fs.readdir(filePath,function(err,f…

管理学定律--彼得原理

彼得原理由美国管理学家劳伦斯彼得&#xff08;Laurence&#xff0e;J&#xff0e;Peter&#xff09;根据千百个有关组织中不能胜任的失败实例的分析而归纳出来&#xff0c;于1960年的一次研习会上提出。其具体内容是&#xff1a;“在一个等级制度中&#xff0c;每个员工趋向于…

word List44

word List44 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢&#xff01;

C++用Prim算法实现无向图最小生成树

#include <iostream> using namespace std; #define INFINE 99999999//假装自己是无穷大 const int N 1010; int graph[N][N]; int vertexnum, arcnum; //lowcost[i]:表示以i为终点的边的最小权值, //当lowcost[i]0说明以i为终点的边的最小权值0, //也就是表示i点加入了…

python序列数据类型_Python 数据类型 之 序列类型

序列&#xff1a;表示索引为非负整数的有序对象集合&#xff0c;所有序列都支持迭代 序列类型有&#xff1a;字符串&#xff0c;列表&#xff0c;元组 三种 字符串也是一种序列 列表和元组是任意python对象的序列或叫有序集合 字符串和元组不可变序列&#xff0c;列表支持插入、…

word List 45

word List 45 One of the pressing problems our nation faces today is how to strike a balance between economic development and environmental protection. 我们国家当今面临的最紧迫的问题之一就是如何平衡经济发展和环境保护之间的关系。 Corruption has existed since…

2020 年 中国.NET开发者调查报告

微信公众号dotnet跨平台2020年初做的一个关于中国.NET开发者调查收到了开发者近 1400 条回复。这份调查报告涵盖了开发者工具链的所有部分&#xff0c;包括编程语言、应用架构、应用服务器、运行时平台、框架技术、框架配置、IDE、.NET/.NET Core 发行版部署模式、构建工具和Ku…

C++实现有向图最短路径-Dijkstra单源最短路径算法

#include <iostream> using namespace std; #define INFINE 99999999//假装我是无穷大 const int N 1010; bool vis[N]; int dis[N]; int graph[N][N];//图 //Dijkstra算法计算点v到图上各个点的最短距离 void Dijkstra(int graph[][N], int v, int n) {//v为起点,//n为…

列名无效如何解决_XSKY ClickHouse如何实现存算分离

在介绍ClickHouse之前&#xff0c;说一下OLAP。OLAP也叫联机分析处理(Online Analytical Processing)。OLAP系统以维度模型来存储历史数据&#xff0c;其主要存储描述性的数据并且在结构上都是同质的。01ClickHouseOLAP应用有如下特点&#xff1a;1、大多数的请求是读请求&…