pdb-不需要IDE也能调试
python中有个pdb模块,使python代码也可以像gdb那样进行调试,一般情况下pdb模块可以在代码内直接使用,也可以通过命令行参数的形式添加该模块进行调试(python -m pdb file.py)。在代码中直接使用pdb模块调试时,import pdb模块后,然后在需要调试的代码出添加pdb.set_trace()命令即可,运行程序后,在运行到次代码处会自动停止,进入调试模式。
一般常用的调试命令有如下:
q 退出debug
h 打印可用的调试命令
b 设置断点,b 在第五行设置断点
h command 打印command的命令含义
disable codenum 使某一行断点失效
enable codenum 使某一行的断点有效
condition codenum xxx 针对断点设置条件
c 继续执行程序,直到下一个断点
n 执行下一行代码,如果当前语句有函数调用,则不会进入函数体中,当前行直接返回(单步跳过)
s 执行下一行代码,但是s会进入函数,并停在第一个能停的地方(相当于单步进入)
w 打印当前执行点的位置
j codenum 让程序跳转到指定的行
l 列出附近的源码
p 打印一个参数的值
a 打印当前函数及参数的值
回车 重复执行上一行
其中p 这个命令很关键,可以查看参数的值,很好!
测试代码如下sum.py:
#/usr/bin/python def add_t( ):
i=1
sum=0
for i in range(1,5):
sum=sum+i
print sum
if __name__ == '__main__':
add_t()
调试过程如下:python -m pdb sum.py
n调试
> /opt/sum.py()<module>()
-> def add_t( ):
(Pdb) n
> /opt/sum.py()<module>()
-> if __name__ == '__main__':
(Pdb) n
> /opt/sum.py()<module>()
-> add_t()
(Pdb) n --Return--
> /opt/sum.py()<module>()->None
-> add_t()
(Pdb) q
n表示执行下一行代码,但是不陷入函数内部,可以看第3、6、9行,在执行add_t函数时并未陷入函数内部。
s调试
> /opt/sum.py()<module>()
-> def add_t( ):
(Pdb) s
> /opt/sum.py()<module>()
-> if __name__ == '__main__':
(Pdb) s
> /opt/sum.py()<module>()
-> add_t()
(Pdb) s
--Call--
> /opt/sum.py()add_t()
-> def add_t( ):
(Pdb) s
> /opt/sum.py()add_t()
-> i=
(Pdb) s
> /opt/sum.py()add_t()
-> sum=
(Pdb) s
> /opt/sum.py()add_t()
-> for i in range(,):
(Pdb) s
> /opt/sum.py()add_t()
-> sum=sum+i
(Pdb) s
> /opt/sum.py()add_t()
-> print sum
(Pdb) p i (Pdb) p sum (Pdb) s > /opt/sum.py()add_t()
-> for i in range(,):
(Pdb) s
> /opt/sum.py()add_t()
-> sum=sum+i
(Pdb) s
> /opt/sum.py()add_t()
-> print sum
(Pdb) p i (Pdb) p sum (Pdb)
s调试和n调试一样,只不过s在遇到函数时会进入函数进行调试,9、12、13表示进入add_t函数内部进行调试,后面使用p命令打印相关函数内参数的值,后面输入r即可退出函数内部的调试。
也可以在py文件里加pdb.set_trace()
例如:
import pdb def make_bread():
pdb.set_trace()
return "I don't have time" print(make_bread())
pdb-不需要IDE也能调试的更多相关文章
- Python开发环境Wing IDE如何使用调试功能
在使用Wing IDE开始调试的时候,需要设置断点的行,读取GetItemCount函数的返回.这可以通过单击行并选择Break工具栏条目,或通过单击行左边的黑色边缘.断点应该以实心红圈的形式出现: ...
- 关闭jetbrains ide support 正在调试此浏览器提示
1 安装JetBrains IDE Support插件 插件地址 2 启用插件 3 设置访问端口 4 WebStorm中设置Live Edit 5 关闭"JetBrains IDE Supp ...
- C\C++ IDE 比较以及调试
C\C++ IDE 比较以及调试 内容概要 这个作业属于哪个课程 2022面向对象程序设计 这个作业要求在哪里 2022面向对象程序设计寒假作业1 这个作业的目标 IDE 选择以及代码调试 作业正文 ...
- Python的功能模块[4] -> pdb/ipdb -> 实现 Python 的单步调试
pdb / ipdb 模块 / pdb / ipdb Module pdb 和 ipdb 的主要作用是用于 Python 程序的单步调试,Python 的调试可参考链接. 下面是一个简单的使用示例 i ...
- 利用 PhpStorm、Idea 等 IDE 如何 运行/调试 Go 程序 ?
以自己常用的 PhpStorm 为例 第一步:下载安装 Go插件 File -> Settings -> Plugins -> 输入关键字:Go 第二步:新建 Go项目 File - ...
- 在 Visual Studio 调试器中指定符号 (.pdb) 和源文件
查找并指定符号文件和源文件:指定符号加载行为.使用符号和源服务器上:加载符号自动或在要求. 内容 查找符号 (.pdb) 文件 查找源文件 查找符号 (.pdb) 文件 说明 在之前的 Vis ...
- Python 代码使用pdb调试技巧
Debug 对于任何开发人员都是一项非常重要的技能,它能够帮助我们准确的定位错误,发现程序中的 bug.python 提供了一系列 debug 的工具和包,可供我们选择.本文将主要阐述如何利用 pyt ...
- 使用pdb模块调试Python
在Python中,我们需要debug时,有三种方式: 加log语句.最简单的方式是添加print()语句来输出我们想要获知的状态或者变量,好处是简单容易操作,坏处是debug完了之后,还需要将prin ...
- 使用 pdb 进行调试
使用 pdb 进行调试 pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点.单步调试.进入函数调试.查看当前代码.查看栈片段.动态改变变 ...
随机推荐
- Codeforces Round #209 (Div. 2)A贪心 B思路 C思路+快速幂
A. Table time limit per test 1 second memory limit per test 256 megabytes input standard input outpu ...
- bzoj 4332: JSOI2012 分零食 快速傅立叶变换
题目: Description 同学们依次排成了一列,其中有A位小朋友,有三个共同的欢乐系数O,S和U.如果有一位小朋友得到了x个糖果,那么她的欢乐程度就是\(f(x)=O*x^2+S*x+U\) 现 ...
- JAVA多线程基础学习二:synchronized
本篇主要介绍Java多线程中的同步,也就是如何在Java语言中写出线程安全的程序,如何在Java语言中解决非线程安全的相关问题,没错就是使用synchronized. 一.如何解决线程安全问题? 一般 ...
- 【BZOJ】4032: [HEOI2015]最短不公共子串(LibreOJ #2123)
[题意]给两个小写字母串A,B,请你计算: (1) A的一个最短的子串,它不是B的子串 (2) A的一个最短的子串,它不是B的子序列 (3) A的一个最短的子序列,它不是B的子串 (4) A的一个最短 ...
- 《Troubleshooting SQL Server》读书笔记-CPU使用率过高(上)
第三章 High CPU Utilization. CPU使用率过高问题很容易被发现,但是诊断却不是很容易.CPU使用过高很多时候会成为其它问题的替罪羊,所以在确认和故障诊断时要抽丝剥茧. 调查CPU ...
- Java 中的几种线程池这么用才是对的
为什么要使用线程池 虽然大家应该都已经很清楚了,但还是说一下.其实归根结底最主要的一个原因就是为了提高性能. 线程池和数据库连接池是同样的道理,数据库连接池是为了减少连接建立和释放带来的性能开销.而线 ...
- Hadoop笔记之搭建环境
Hadoop的环境搭建分为单机模式.伪分布式模式.完全分布式模式. 因为我的本本比较挫,所以就使用伪分布式模式. 安装JDK 一般Linux自带的Java运行环境都是Open JDK,我们到官网下载O ...
- Oracle笔记之用户管理
1. 创建用户 创建用户使用create user语句,需要DBA权限: CREATE USER tom IDENTIFIED BY mot; 2. 更改用户密码 修改别人的密码需要DBA权限,或者a ...
- python作业员工信息表程序(第四周)
作业需求: 1. 员工信息表程序,实现增删改查操作: 2. 可进行模糊查询,语法至少支持下面3种: select name,age from staff_table where age > 22 ...
- phpmywind调用方法大全
头部文件调用 <?php require_once('header.php'); ?> 底部文件调用 <?php require_once('footer.php'); ?> ...