type
status
date
slug
summary
tags
category
icon
password
comment_flag
SLUGS
简介
pdb 模块定义了一个交互式源代码调试器,用于 Python 程序。它支持在源码行间设置(有条件的)断点和单步执行,检视堆栈帧,列出源码列表,以及在任何堆栈帧的上下文中运行任意 Python 代码。它还支持事后调试,可以在程序控制下调用。
用法
启用pdb的方式
非侵入式(不修改源码,在命令行中启用)
侵入式(在需调试的源码中添加一行)
pdb指令
操作 | 指令 | 备注 |
查看源码list | l : 查看当前位置前后11行源代码(多次会翻页)
ll : (longlist)查看当前函数或框架的所有源代码
l first : 列出first行周围11条代码
l first,second : 列出first--second范围的代码 | 当前位置在代码中会用-->这个符号标出来 |
添加断点break | b : 列出当前所有断点,和断点执行到统计次数
b lineno : 断点添加到哪一行
b filename:lineno : 断点添加到某文件的某一行
b functionname : 在函数执行的第一行设置断点
| ㅤ |
添加临时断点
temporary break | tbreak
tbreak lineno
tbreak filename:lineno
tbreak functionname | 相关操作同 b |
清除断点
clear | cl : 清除所有断点,会提示确认(包括临时断点)
cl filename:lineno : 清除指定文件行的断点
cl bpnumber [bpnumber ...] : 清除指定序号的断点 | bpnumber 断点序号(多个以空格分隔) |
停用/激活/忽略断点 | disable bpnumber : 停用断点,和cl的区别是,断点依然存在,只是不启用
enable bpnumber : 激活断点
ignore bpnumber [count] : 为指定的断点编号设置忽略次数。 | 如果省略 count,则忽略次数将设置为 0。 |
条件断点 | condition bpnumber [condition] : 为断点设置一个新 condition,它是一个表达式,且它的计算值为 true 时断点才起作用。 | 如果没有给出 condition,则删除现有条件,也就是将断点设为无条件。 |
打印变量值
print | p expression
pp expression : pretty print | ㅤ |
逐行调试 | s : (step)执行下一条命令
n : (next)执行下一条语句
r : (return)执行当前运行函数到结束 | ㅤ |
非逐行调试 | c : (continue)继续执行,直到遇到下一条断点
unt lineno : (until)执行到指定行
j lineno : (jump)直接跳转到指定行(被跳过的代码不执行) | ㅤ |
查看函数参数
args | a : 在函数中时打印当前函数的参数列表 | ㅤ |
打印变量类型 | whatis expression | ㅤ |
启动交互式解释器 | interact : 启动一个python的交互式解释器,使用当前代码的全局命名空间(使用ctrl+d返回pdb) | ㅤ |
打印堆栈信息
where | w : 打印堆栈信息,最新的帧在最底部。箭头表示当前帧。 | ㅤ |
退出pdb | q | ㅤ |