「Python调试器」,快速定位各种疑难杂症!!!

现在很多的编辑器其实都带着「调试程序」的功能,比如写 c/c++ 的 codeblocks,写 Python 的 pycharm,这种图形界面的使用和显示都相当友好,简单方便易学,这个不是我这篇文章要讲的重点。今天主要是想给大家介绍一下 「Python调试器」,快速定位各种疑难杂症。

Python 调试器

这一部分主要就是想说两个 Python 调试器,分别是标准库自带的 pdb 和开源的 ipdb。

pdb

pdb 是 Python 自带的库,为 Python 提供了一种交互式的源码调试功能,包含当前调试器应有的功能,包括设置断点、单步调试、查看源码等。其实如果你之前学过 c/c++ 的话,你可能知道 gdb 这个命令行调试工具,如果你之前用过 gdb,那么恭喜你你可以直接用 pdb 了,因为这哥俩一个用法。如果你不知道 gdb 也没事,我们先来看一下 pdb 的部分调试命令:

这里有两种不同的方法来启动 Python 调试器,两种方法适用于不同的场景。一种是直接在命令行参数指定使用 pdb 模块启动 Python 文件,这种适合于代码文件较短的情况,将在代码的第一行启动 Python 调试器。具体如下所示(例如文件名是 test.py):


python -m pdb test.py

另一种是在 Python 代码中调用 pdb 模块的 set_trace 方法设置一个断点,当程序运行到此断点的时候,程序将会暂停执行并且打开 pdb 调试器,这种适合于代码文件较大的情况。具体如下所示:

import pdb

def get_sum(n):
   cnt = 0
   for i in range(n):
       pdb.set_trace()
       cnt += i
       print(cnt)

if __name__ == ‘__main__‘:
   get_sum(5)

启动 Python 调试器以后就可以使用上面截图中的调试命令进行程序的调试。比如在接下来的操作中,我们先使用 list 来查看我们的代码,然后使用 p 打印变量当前的取值,最后用 n 执行下一行 Python 代码:

ipdb

ipdb 是一个开源的 Python 调试器,其实它和 pdb 的接口是一样的。那既然一样的接口,那为啥还要设计个 ipdb 呢?黑格尔曾经说过「存在即合理」,ipdb 相比于 pdb 多了语法高亮,tab 自动补全等友好功能,在易用性方面做了很大的改进,这个感觉就和 Python 和 IPython 一样。

当然,ipdb 作为一个第三方库,在使用之前必然要先安装:

pip install ipdb

我们修改一下之前例子中的 test.py 文件,修改之后的代码如下:

import ipdb

def get_sum(n):
   cnt = 0
   for i in range(n):
       ipdb.set_trace()
       cnt += i
       print(cnt)

if __name__ == ‘__main__‘:
   get_sum(5)

具体的操作还是和上面的 pdb 的操作一样:

大家在学python的时候肯定会遇到很多难题,以及对于新技术的追求,这里推荐一下我们的Python学习扣qun:784758214,这里是python学习者聚集地!!同时,自己是一名高级python开发工程师,从基础的python脚本到web开发、爬虫、django、数据挖掘等,零基础到项目实战的资料都有整理。送给每一位python的小伙伴!每日分享一些学习的方法和需要注意的小细节

原文地址:https://blog.51cto.com/14318113/2397078

时间: 2024-11-04 19:04:48

「Python调试器」,快速定位各种疑难杂症!!!的相关文章

python 调试器

python 调试器: 使用 pdb 进行调试 pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点.单步调试.进入函数调试.查看当前代码.查看栈片段.动态改变变量的值等.pdb 提供了一些常用的调试命令,详情见表 1. 表 1. pdb 常用命令 import pdb pdb.set_t 下面结合具体的实例讲述如何使用 pdb 进行调试. 清单 1. 测试代码示例 vim pdbtest.py     #!/usr/bin/env 

Python调试器入门

Python 生态系统包含丰富的工具和库,可以让开发人员更加舒适. 例如,我们之前已经介绍了如何使用交互式 shell 增强 Python.本文重点介绍另一种可以节省时间并提高 Python 技能的工具:Python 调试器. 加vx:tanzhouyiwan 免费领取Python学习资料一套 Python 调试器 Python 标准库提供了一个名为 pdb 的调试器.此调试器提供了调试所需的大多数功能,如断点.单行步进.堆栈帧的检查等等. 了解一些pdb 的基本知识很有用,因为它是标准库的一部

·「python爬虫入门」网易云音乐下载

2015-6-2 今天把昨天Git上看的一个下载网易云音乐歌单歌曲的脚本尝试看懂并修改 Git地址:https://github.com/keli/netease-music #! /usr/bin/env python # -*- coding: utf-8 -*- import urllib2 import json import os import sys import md5 import string import random # Set cookie cookie_opener =

快速定位异常

net程序调试一:快速定位异常 作为一个程序员,解BUG是我们工作中常做的工作,甚至可以说解决问题能力是一个人工作能力的重要体现.因为这体现了一个程序员的技术水平.技术深度.经验等等. 那么在我们解决BUG的过程中,定位问题是非常重要的.有句话叫"发现问题是解决问题的一半. 本文讲述就快速定位异常(专指.NET程序异常)的方法.包括在本机定位异常,在客户环境定位.net程序异常,在客户环境定位SilverLight异常. 一:定位本机异常 在我们本机定位异常很容易.假设我们都是使用的的Visua

Visual Studio 2017 调试器的工作进程(msvsmon.exe)意外退出 调试将终止

原文:Visual Studio 2017 调试器的工作进程(msvsmon.exe)意外退出 调试将终止 开发环境: Windows 10 in Parallels Desktop Visual Studio 15.6 场景还原: 使用 Visual Studio 15.6 (即 Visual Studio 2017) 新建 ASP.NET Core MVC 项目,启动调试,提示: 调试器的工作进程(msvsmon.exe)意外退出.调试将终止 其实这个问题曾经多次遇到过,但是都没做记录,导致

巧用浏览器F12调试器定位系统前后端bug

做测试的小伙伴可能用过httpwatch,firebug,fiddler,charles等抓包(数据包)工具,但实际上除了这些还有一个简单实用并的抓包工具,那就是浏览器的F12调试器. httpwatch,firebug都是浏览器的插件,需要额外下载,fiddler,charles也需要额外下载安装包另行安装,但是浏览器F12调试器却是所有浏览器内置的调试器,不需要大家额外去安装的,打开它只是一个顺手的事情,而且它提供的功能也比较强大,因此如果在开发或者测试web系统的时候,我们可以先考虑使用这

「量化風投」:用數據挖掘潛在項目

形勢變遷:創業者有了更多話語權曾就職於風投機構GeneralCatalyst和BessemerVenturePartners的克里斯·法爾莫(ChrisFarmer)指出,風投行業曾經是個封閉的圈子,只有少數基金能接觸到谷歌.Facebook這種企業.法爾莫正在籌建一家基於數據的新基金並計劃於明年初開始融資,該基金能以智能化方式向投資人提供來自CrunchBase.社交媒體.網頁計量和多個獨家數據來源的大量信息,從而幫助投資人判斷最佳投資機會.法爾莫解釋了如今的形勢變化:在過去,風投機構可以憑藉

《python灰帽子》学习笔记:调试器设置

一.构造 C  数据类型 C Type | Python Type | ctypes Type _______________________________________________________________________________________ char | 1-character | string c_char wchar_t | 1-character Unicode | string c_wchar char | int/long | c_byte char |

[原]调试实战——程序CPU占用率飙升,你知道如何快速定位吗?

原调试debugwindbghangprocess explorer 前言 如果我们自己的程序的CPU Usage(CPU占用率)飙升,并且居高不下,很有可能陷入了死循环.你知道怎么快速定位并解决吗?今天跟大家分享几种定位方法,希望对你有所帮助. 如何判断是否有死循环? 通过电脑风扇的声音猜测. 如果风扇一直响个不停,说明电脑很热.高CPU占用率会导致CPU发热量增大,从而导致风扇狂响.如果听到风扇响个不停,可以打开任务管理器看看CPU占用率是不是很高.如果发现是我们的进程导致的高CPU占用率,