Python案例分析|使用调试器调试Python程序

简介: 本案例通过一个示例程序的调试,帮助大家了解使用Python调试器调试程序的方法分析定位程序错误是程序设计最基本的功能。Python标准库的调试器pdb提供了基本的调试功能:设置断点、查看变量等。集成开发环境(IDE,例如IDLE、Spyder、PyCharm)则提供了更直接方便的调试器。本案例研究通过实例,阐述使用IDLE调试器跟踪调试Python程序的基本方法

01、示例程序

本节采用的示例程序为一个简单的递归函数小程序。程序模拟倒计时,实现代码如下。
【例1】倒计时小程序countdown.py。

import time
def countdown(n):
    """从n倒计数到0"""
    if n <= 0: #基本情况
        print("时间到!!!")
    else: #递归步骤
        time.sleep(1) #睡眠1秒钟
        print(n) #输出倒数的数字
        countdown(n-1) #递归调用
if __name__ == "__main__":
    countdown(3)

程序正常运行结果如下所示。

3

2

1

时间到!!!

02、使用IDLE调试器调试运行程序

【例CS7.2】使用IDLE调试器调试运行程序示例程序countdown.py。

(1)运行IDLE并打开程序源代码countdown.py。

(2)设置断点。在想要调试的语句上,通过鼠标右键快捷菜单【Set Breakpoint】设置断点,设置了断点的代码行底色为黄色,如图CS7-1所示。也可以通过【Clear Breakpoint】清除已经设置的断点。

image.png

■ 图1 设置断点

(3)打开调试器。在IDLE窗口,按快捷键【F5】,程序开始运行。在弹出的Python解释器命令行窗口,通过执行菜单命令【Debug】|【Debugger】,打开调试器窗口,如图2所示。

image.png


■ 图2 打开调试器窗口

请确保【Debugger】菜单处于选中状态,此时Python解释器命令行窗口显示[DEBUG ON]。在调试器【Debug Control】窗口,选中Source和Globals复选框。如图3所示。

image.png


■ 图3 选中Source和Globals复选框

(4)调试运行程序。在IDLE窗口,按快捷键【F5】,程序开始运行。程序在代码的第一行中断暂停。如图4所示,底色为灰色的代码为当前执行代码行。

image.png


■ 图4 底色为灰色的代码为当前执行代码行

用户可以通过【Debug Control】窗口查看程序运行状态(调用堆栈Stack、局部变量Locals、全局变量Globals),执行下一步调试命令。如图5所示。

image.png


■ 图5 通过【Debug Control】窗口查看程序运行状态

(5)在【Debug Control】窗口中单击运行调试命令【Go】,使程序运行到下一个断点处中断暂停。如图6所示。

image.png

■ 图6 在【Debug Control】窗口中使程序运行到下一个断点处中断暂停


(6)查看程序运行状态。查看局部变量Locals和全局变量Globals。此时n为3。

(7)在【Debug Control】窗口中单击运行调试命令【Over】,单步执行命令。由于n为3,故程序跳转到else后的第一条语句。

(8)继续执行其它调试命令。(注:运行调试命令【Go】执行到下一个断点;【Step】进入函数;【Over】单步执行;【Out】跳出函数;【Quit】退出结束调试)。

目录
相关文章
|
1月前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能食品消费模式分析的深度学习模型
使用Python实现智能食品消费模式分析的深度学习模型
126 70
|
3天前
|
存储 NoSQL 数据库连接
在Python程序中实现LevelDB的海量key的分批次扫描
通过本文的步骤,您可以在Python程序中实现对LevelDB海量key的分批次扫描。这样不仅能够有效地管理大规模数据,还可以避免一次性加载过多数据到内存中,提高程序的性能和稳定性。希望这篇指南能为您的开发工作提供实用的帮助。
43 28
|
1月前
|
机器学习/深度学习 数据采集 数据挖掘
使用Python实现智能食品消费市场分析的深度学习模型
使用Python实现智能食品消费市场分析的深度学习模型
118 36
|
26天前
|
数据可视化 算法 数据挖掘
Python量化投资实践:基于蒙特卡洛模拟的投资组合风险建模与分析
蒙特卡洛模拟是一种利用重复随机抽样解决确定性问题的计算方法,广泛应用于金融领域的不确定性建模和风险评估。本文介绍如何使用Python和EODHD API获取历史交易数据,通过模拟生成未来价格路径,分析投资风险与收益,包括VaR和CVaR计算,以辅助投资者制定合理决策。
71 15
|
21天前
|
安全 API C语言
Python程序的安全逆向(关于我的OPENAI的APIkey是如何被盗的)
本文介绍了如何使用C语言编写一个简单的文件加解密程序,并讨论了如何为编译后的软件添加图标。此外,文章还探讨了Python的.pyc、.pyd等文件的原理,以及如何生成和使用.pyd文件来增强代码的安全性。通过视频和教程,作者详细讲解了生成.pyd文件的过程,并分享了逆向分析.pyd文件的方法。最后,文章提到可以通过定制Python解释器来进一步保护源代码。
64 6
|
30天前
|
机器学习/深度学习 数据采集 数据挖掘
使用Python实现智能食品消费趋势分析的深度学习模型
使用Python实现智能食品消费趋势分析的深度学习模型
115 18
|
1月前
|
IDE 程序员 开发工具
Python编程入门:打造你的第一个程序
迈出编程的第一步,就像在未知的海洋中航行。本文是你启航的指南针,带你了解Python这门语言的魅力所在,并手把手教你构建第一个属于自己的程序。从安装环境到编写代码,我们将一步步走过这段旅程。准备好了吗?让我们开始吧!
|
15天前
|
Shell 开发工具 Python
如何在vim里直接运行python程序
如何在vim里直接运行python程序
|
自然语言处理 算法 Python
|
自然语言处理 算法 索引