Python Debugger

pdb

The Python Debugger Pdb

可以直接在命令行中启动,调试程序

也可以写在代码中

命令行使用

可以直接在命令行指定要进行调试的程序

python -m pdb my_test.py

之后会显示当前代码执行的位置

通过输入命令进行操作

命令

命令 作用
h(elp) 帮助
w(here) 打印当前堆栈
d(own)[count] 执行跳转到当前堆栈的深 [count] 层,默认为 1
u(p) 执行跳转到当前堆栈的上 [count] 层,默认为 1
b(reak)[ ([filename:]lineno | function) [, condition] ] 不加参数:列出所有断点;

指定行号:(可以指定其他文件的一行) 在当前行添加断点;

指定函数:在函数的第一个可执行语句添加断点;

指定条件:当条件语句满足时断点生效
tbreak[ ([filename:]lineno | function) [, condition] ] 临时断点,生效一次后自动删除,使用方法同 b(reak)
cl(ear) 不加参数:清除所有断点;

指定行号:(可以指定其他文件的一行) 清除当前行断点;

指定断点号:清除此断点
disable bpnumber [bpnumber ...] 停用断点
enable bpnumber [bpnumber ...] 激活断点
condition bpnumber [condition] 为此断点设定条件
s(tep) 执行下一条命令,如果是函数调用,就执行到调用函数的第一句(会进入到调用的函数内部)
n(ext) 执行下一条语句,如果是函数调用,就执行函数,之后执行下一条语句(不会进入调用的函数内部)
unt(il) [lineno] 不带参数的情况下,继续执行,直到到达行号大于当前行的行号为止。使用[lineno],继续执行直到行号大于或等于[lineno]。
r(eturn) 继续执行,直至当前函数 return
retval 打印函数最后一次的返回值
run [args...] 重新启动程序,相当于restart
c(ont(inue)) 继续执行,直至遇到断点
l(ist) 列出当前语句周围 11 行的源码。

如果有一个参数,列出该行号周围 11 行的源码。

如果有两个参数,列出区间内的源码。

如果有两个参数,且后面的小,前面的参数为行号,后面参数为列出源码的行数。
longlist | ll 列出当前函数的全部源码
a(rgs) 列出当前函数的所有参数
whatis arg 打印参数类型
p expression 输出 expression 的值
pp expression 好看一点地输出 expression 的值
q(uit) exit 退出 debugger 停止执行语句

set_trace

set_trace() 是最常用的断点方式,放置在代码中,程序会停在断点处,输入命令 c 继续运行

示例:

import pdb

def main(i):
for i in range(i):
pdb.set_trace()
print(i) if __name__ == '__main__':
main(10)

输出:

> /dir/test.py(7)main()
-> print(i)
(Pdb)

表示执行到 /dir/test.py 的第 7 行,main() 函数中,语句为 print(i)

breakpoint()

Python 3 中加入了内置函数 breakpoint() 可以直接调用 pdb,相当于 pdb.set_trace()

run & runeval

会在当前位置打断点,接下来会执行字符串类型的表达式

用法

run(cmd, globals=None, locals=None) 会对传入的参数执行 exec()

runeval(expr, globals=None, locals=None) 会对传入的参数执行 eval()

关于 exec() 和 eval() <- 点击查看

如果不传入参数,则默认使用全局变量(__main__.dict)

如果要传入参数就要将全部参数以字典形式传入,使用没有传入的参数会报错

The Python Debugger Pdb的更多相关文章

  1. The python debugger(PDB)的简介

    转自:http://www.cnblogs.com/wei-li/archive/2012/05/02/2479082.html 学习Python调试,最好的资料当然是官方文档和(pdb)help了, ...

  2. gdb可以调试python的pdb么

    1.如题: gdb可以调试python的pdb么? 答案:可以,实验如下. 2.实验: 生成一个a.py代码文件,代码如下: import pdb a = 1 print "111" ...

  3. Python 调试 PDB

    出处:http://blog.163.com/gjx0619@126/blog/static/12740839320114995947700/ 完整 请参考:http://docs.python.or ...

  4. python 用pdb调试

    简单调试 Python 程序   在 Python 中也可以像 gcc/gdb 那样调试程序,只要在运行 Python 程序时引入 pdb 模块(假设要调试的程序名为 d.py): $ vi d.py ...

  5. python调试工具pdb

    pdb是基于命令行的调试工具,非常类似gnu的gdb(调试c/c++). 命令 简写命令 作用 break b 设置断点 continue c 继续执行程序 list l 查看当前行的代码段 step ...

  6. Python 之pdb调试

    # 调试方式一:python -m pdb test.py # 相关命令: # l 查看当前代码 # n 向下执行一行代码 # c continue继续执行代码 # b break + 行数 添加断点 ...

  7. 学习笔记之Python调试 - pdb

    python调试神器——pdb - 软谋python https://mp.weixin.qq.com/s/w3Xw8I_zh7MFq2dx5kdQXw 优秀开发者必备技能包:Python调试器 - ...

  8. python使用 pdb 进行调试--- python -m pdb xxx.py 即可 和gdb使用一样

    使用 pdb 进行调试 pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点.单步调试.进入函数调试.查看当前代码.查看栈片段.动态改变变 ...

  9. [Python] Debugger in Pycharm

    From: http://blog.csdn.net/u013088062/article/details/50214459 From: http://blog.csdn.net/u013088062 ...

随机推荐

  1. CF414D Mashmokh and Water Tanks

    CF414D Mashmokh and Water Tanks 洛谷评测传送门 题目描述 Mashmokh is playing a new game. In the beginning he has ...

  2. 基础知识 Asp.Net MVC EF各版本区别

    原文:https://www.cnblogs.com/liangxiaofeng/p/5840754.html 2009年發行ASP.NET MVC 1.0版 2010年發行ASP.NET MVC 2 ...

  3. 更新GitHub项目出现There is no tracking information for the current branch. Please specify which branch you want to merge with. 怎么解决

    git pull命令用于从另一个存储库或本地分支获取并集成(整合).git pull命令的作用是:取回远程主机某个分支的更新,再与本地的指定分支合并,它的完整格式稍稍有点复杂. 如果当前分支只有一个追 ...

  4. 80%应聘者都不及格的JS面试题

    共 5024 字,读完需 6 分钟,速读需 2 分钟,本文首发于知乎专栏前端周刊.写在前面,笔者在做面试官这 2 年多的时间内,面试了数百个前端工程师,惊讶的发现,超过 80% 的候选人对下面这道题的 ...

  5. 【JS】JS实现Html转义和反转义(html编码和解码)的方法总结

    1.JS实现html转义和反转义主要有两种方式: 1).利用用浏览器内部转换器实现html转义: 2).用正则表达式实现html转义: 2.封装的JS工具类: var HtmlUtil = { /*1 ...

  6. 【2016NOI十连赛2-2】黑暗

    [2016NOI十连赛2-2]黑暗 题目大意:定义一个无向图的权值为连通块个数的\(m\)次方.求\(n\)个点的所有无向图的权值和.多次询问. 数据范围:\(T\leq 1000,n\leq 300 ...

  7. 前端 用http-server启动本地服务器

    附:http-server详细介绍,包括参数等:  https://www.npmjs.com/package/http-server 开始: 准备node.js环境: 在我的博文“  Vue.js学 ...

  8. 《细说PHP》第四版 样章 第18章 数据库抽象层PDO 12

    18.9  管理表books实例 在Web项目中,几乎所有模块都要和数据表打交道,而对表的管理无非就是增.删.改.查等操作,所以熟练掌握对表进行管理的这些常见操作是十分有必的.本例为了能更好地展示PD ...

  9. 使用paramiko模块进行封装,远程操作linux主机

    import time import paramiko class HandleParamiko: ''' 定义一个linux处理类 ''' def __init__(self, hostname, ...

  10. Python规范:提高可读性

    PEP 8 规范 PEP 是 Python Enhancement Proposal 的缩写,翻译过来叫"Python 增强规范". 缩进规范 PEP 8 规范告诉我们,请选择四个 ...