当前位置: 首页 > article >正文

【Python系列】Python中打印详细堆栈信息的技巧

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
img

  • 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
  • 导航
    • 檀越剑指大厂系列:全面总结 java 核心技术,jvm,并发编程 redis,kafka,Spring,微服务等
    • 常用开发工具系列:常用的开发工具,IDEA,Mac,Alfred,Git,typora 等
    • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 新空间代码工作室:提供各种软件服务,承接各种毕业设计,毕业论文等
    • 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
    • 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

博客目录

    • 一. 使用`traceback`模块
      • 1.1 `traceback.print_exc()`
      • 1.2 `traceback.format_exc()`
    • 二. 在异常处理中打印堆栈
      • 2.1 基本用法
      • 2.2 定制输出
    • 三. 使用`logging`模块
      • 3.1 配置日志
      • 3.2 记录堆栈信息
    • 四. 堆栈信息的高级应用
      • 4.1 集成调试器
      • 4.2 性能分析
      • 4.3 代码覆盖率

在 Python 开发过程中,调试是一个不可或缺的环节。当代码出现问题时,能够快速准确地定位问题所在是提高开发效率的关键。堆栈信息作为程序执行过程中的调用记录,对于理解程序的运行状态和定位错误至关重要。

一. 使用traceback模块

traceback模块是 Python 标准库中专门用于处理异常堆栈跟踪的工具。它提供了丰富的函数来获取、格式化和打印异常信息。

1.1 traceback.print_exc()

当程序抛出异常时,traceback.print_exc()函数可以直接打印异常信息和堆栈跟踪,无需手动处理异常对象。这种方式简单快捷,适用于快速定位问题。

import traceback

try:
    # 你的代码逻辑
    # 可能会引发异常的代码
except Exception as e:
    traceback.print_exc()

1.2 traceback.format_exc()

如果你需要对堆栈信息进行进一步的处理,比如记录到日志文件或者自定义输出格式,traceback.format_exc()是一个更好的选择。它返回一个包含堆栈信息的字符串,你可以将其打印出来或者用于其他目的。

import traceback

try:
    # 你的代码逻辑
except Exception:
    print(traceback.format_exc())

二. 在异常处理中打印堆栈

except块中,除了直接使用traceback模块的函数外,还可以结合print函数来打印堆栈信息。这种方式更加灵活,可以根据需要定制输出内容。

2.1 基本用法

import traceback

try:
    # 你的代码逻辑
except Exception:
    print(traceback.format_exc())

2.2 定制输出

你可以根据需要定制输出格式,比如添加额外的错误信息或者高亮显示某些关键部分。

import traceback

try:
    # 你的代码逻辑
except Exception:
    exc_type, exc_value, exc_traceback = sys.exc_info()
    print(f"Error: {exc_type.__name__}, Message: {exc_value}")
    print(traceback.format_exc())

三. 使用logging模块

对于大型项目或者需要将错误信息记录到日志文件的场景,logging模块提供了更加强大的日志管理功能。

3.1 配置日志

首先,需要配置日志系统,包括日志级别、日志文件名等。

import logging
import traceback

logging.basicConfig(level=logging.DEBUG, filename='app.log')

3.2 记录堆栈信息

在异常处理中,使用logger.exception()来记录堆栈信息。这个方法会自动记录异常的堆栈跟踪,无需手动格式化。

import logging
import traceback

try:
    # 你的代码逻辑
except Exception:
    logging.exception("An unexpected error occurred")

四. 堆栈信息的高级应用

除了基本的堆栈信息打印,还可以结合其他工具和技术来提高错误追踪的效率。

4.1 集成调试器

在某些情况下,直接打印堆栈信息可能不足以解决问题。这时,可以考虑集成调试器,如pdb,来逐步执行代码,观察变量状态。

import pdb; pdb.set_trace()

4.2 性能分析

对于性能问题,除了堆栈信息外,还需要分析代码的执行时间。可以使用cProfile模块来进行性能分析。

import cProfile

def my_function():
    # 你的代码逻辑
    pass

cProfile.run('my_function()')

4.3 代码覆盖率

在这里插入图片描述

在测试过程中,了解代码的覆盖率也很重要。可以使用coverage模块来分析测试覆盖率,确保所有代码路径都被测试到。

coverage run -m unittest discover
coverage report -m

觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

img


http://www.kler.cn/a/398285.html

相关文章:

  • AI驱动的桌面笔记应用Reor
  • ReactPress与WordPress:两大开源发布平台的对比与选择
  • 【Oracle篇】掌握SQL Tuning Advisor优化工具:从工具使用到SQL优化的全方位指南(第六篇,总共七篇)
  • PCHMI串口接收实验
  • 【HAProxy09】企业级反向代理HAProxy高级功能之压缩功能与后端服务器健康性监测
  • 创建vue+electron项目流程
  • Synchronized原理
  • K8S单节点部署及集群部署
  • PyTorch 张量的常用 API
  • Guava Cache
  • SQLI LABS | Less-51 GET-Error Based-ORDER BY CLAUSE-String-Stacked Injectiion
  • 图像分割——Hough变换检测法
  • C语言——判断是不是字母
  • YOLOv7-0.1部分代码阅读笔记-train.py
  • SQLite 安装指南
  • MAC上的Office三件套报53错误解决方案(随笔记)
  • 【MogDB】MogDB5.2.0重磅发布第八篇-支持PLSQL编译全局缓存
  • 如何在 Ubuntu 上安装 Mattermost 团队协作工具
  • 【ArcGIS微课1000例】0127:计算城市之间的距离
  • 9.2 使用haarcascade_frontalface_default.xml分类器检测视频中的人脸,并框出人脸位置。
  • 企业项目级IDEA设置类注释、方法注释模板(仅增加@author和@date)
  • 你的服务器缓存中毒过么?
  • Essential Cell Biology--Fifth Edition--Chapter one (8)
  • ssm126基于HTML5的出租车管理系统+jsp(论文+源码)_kaic
  • 牛客周赛第一题2024/11/17日
  • 深入理解Flutter生命周期函数之StatefulWidget(一)