Python调试坑

作者: Readme | 来源:发表于2014-07-25 10:04 被阅读531次

       写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)

相关文章

  • Python调试坑

    写python的人一般都不太看重调试, 因为这是一门解释性语言, 在哪出错会立马在解释器里提示出来。但是, ...

  • 参考资料:Python 的调试

    Python 代码调试技巧 我常用的 Python 调试工具 详细演示进入函数的 pdb s 调试 Python ...

  • python调试

    linux python调试技巧 Linux下Python基础调试 http://blog.163.com/liu...

  • HBuilder Android真机调试

    关于调试 难者不会,会者不难。对于调试,这句话尤其合适。无论是前端调试、Java调试、PHP调试、Python调试...

  • 节省时间并提高 Python 开发人员的技能工具:Python

    Python 调试器 Python 标准库提供了一个名为 pdb 的调试器。此调试器提供了调试所需的大多数功能,如...

  • 今天被自己坑了

    今天调试代码被自己给坑了,写了了python脚本,很简单的功能,就是从网络下载压缩文件,并解压到本地,问题就是运行...

  • Ansible 开发调试 之【pdb本地调试】

    Ansible是用Python编写的,用于调试本地代码执行的工具是Python调试器 **pdb**。这个工具允许...

  • Xcode实现Framework联调

    一头雾水的时候,真觉得Framework调试就是个坑;待坑填满的时候,原来啊Framework调试就那几步。 1....

  • Python 必需学会的调式方法

    没错就是pdb 调试,pdb 是 python 的一个内置模块,用于命令行来调试 Python 代码。或许你会说,...

  • python Debug宏定义

    前言 调试python时,常碰到打印信息需手动删除;且python没有宏定义.依据之前使用C的习惯,定义调试模式,...

网友评论

  • Readme:补充: 也可以通过logger.exception的方式

本文标题:Python调试坑

本文链接:https://www.haomeiwen.com/subject/wgbstttx.html