0

0

pdb--python调试利器

星夢妙者

星夢妙者

发布时间:2025-07-18 11:08:30

|

623人浏览过

|

来源于php中文网

原创

一、调试模块

要调试模块,可以使用Python的pdb模块。以下是如何在模块中使用pdb的示例:

>>> import pdb
>>> import mymodule
>>> pdb.run('mymodule.test()')
> <string>(0)?()
(Pdb) continue
> <string>(1)?()
(Pdb) continue
NameError: 'spam'
> <string>(1)?()
(Pdb)

二、调试脚本

要调试脚本,可以使用Python的pdb模块启动调试器。以下是如何在脚本中使用pdb的示例:

python3 -m pdb myscript.py

三、代码中打堆栈(3.7版本内置了该功能)

立即学习Python免费学习笔记(深入)”;

在代码中设置断点并进入调试模式,可以使用以下命令:

import pdb;pdb.set_trace()

四、查看crashed program

ChatPs
ChatPs

一款基于Photoshop的AI插件

下载

如果程序崩溃,可以使用pdb查看崩溃时的堆栈信息。以下是如何在崩溃后使用pdb的示例:

>>> import pdb
>>> import mymodule
>>> mymodule.test()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "./mymodule.py", line 4, in test
    test2()
  File "./mymodule.py", line 3, in test2
    print(spam)
NameError: spam
>>> pdb.pm()
> ./mymodule.py(3)test2()
-> print(spam)
(Pdb)

五、主要函数

pdb--python调试利器

六、实现自定义功能可以修改pdb.Pdb类

可以通过修改pdb.Pdb类来实现自定义调试功能。例如,要跳过特定模块,可以这样做:

import pdb; pdb.Pdb(skip=['django.*']).set_trace()

七、调试命令

以下是pdb调试器中常用的命令:

  • h(elp) [command]:显示帮助信息或特定命令的帮助信息。
  • w(here):打印堆栈跟踪,最近的帧在底部。箭头指示当前帧。
  • d(own) [count]:将当前帧向下移动count级(默认为1级),进入较新的帧。
  • u(p)[count]:将当前帧向上移动count级(默认为1级),进入较旧的帧。
  • b(reak) [([filename:]lineno | function) [, condition]]:设置断点。
  • tbreak [([filename:]lineno | function) [, condition]]:设置临时断点。
  • cl(ear) [filename:lineno | bpnumber ...]:清除断点。
  • disable [bpnumber ...]:禁用断点。
  • enable [bpnumber ...]:启用断点。
  • ignore bpnumber [count]:设置断点的忽略计数。
  • condition bpnumber [condition]:为断点设置条件。
  • commands [bpnumber]:为断点指定命令列表。
  • s(tep):执行当前行,在第一次可能的场合停止。
  • n(ext):继续执行直到当前函数的下一行或返回。
  • unt(il) [lineno]:继续执行直到达到当前行号之后的行。
  • r(eturn):继续执行直到当前函数返回。
  • c(ont(inue)):继续执行,仅在遇到断点时停止。
  • j(ump) lineno:设置将要执行的下一行。
  • l(ist) [first[, last]]:列出当前文件的源代码。
  • ll | longlist:列出当前函数或帧的所有源代码。
  • a(rgs):打印当前函数的参数列表。
  • p expression:在当前上下文中评估表达式并打印其值。
  • pp expression:与p命令类似,但使用pprint模块进行美观打印。
  • whatis expression:打印表达式的类型。
  • source expression:尝试获取给定对象的源代码并显示。
  • display [expression]:每次在当前帧中停止执行时显示表达式的值。
  • undisplay [expression]:不在当前帧中显示表达式。
  • interact:启动一个交互式解释器。
  • alias [name [command]]:创建一个名为name的别名,执行command。
  • unalias name:删除指定的别名。
  • ! statement:在当前堆栈帧的上下文中执行语句。
  • run [args ...]:重新启动调试的Python程序。
  • restart [args ...]:restart是run的别名。
  • q(uit):退出调试器,终止正在执行的程序。
  • debug code:进入递归调试器,逐步执行代码参数。
  • retval:打印函数最后一次返回的返回值。

相关文章

python速学教程(入门到精通)
python速学教程(入门到精通)

python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
counta和count的区别
counta和count的区别

Count函数用于计算指定范围内数字的个数,而CountA函数用于计算指定范围内非空单元格的个数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

203

2023.11.20

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

434

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

601

2023.08.10

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

434

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

601

2023.08.10

function是什么
function是什么

function是函数的意思,是一段具有特定功能的可重复使用的代码块,是程序的基本组成单元之一,可以接受输入参数,执行特定的操作,并返回结果。本专题为大家提供function是什么的相关的文章、下载、课程内容,供大家免费下载体验。

497

2023.08.04

js函数function用法
js函数function用法

js函数function用法有:1、声明函数;2、调用函数;3、函数参数;4、函数返回值;5、匿名函数;6、函数作为参数;7、函数作用域;8、递归函数。本专题提供js函数function用法的相关文章内容,大家可以免费阅读。

166

2023.10.07

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

23

2026.03.06

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

68

2026.03.05

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 10.2万人学习

Git 教程
Git 教程

共21课时 | 4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号