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也能调试的更多相关文章

  1. Python开发环境Wing IDE如何使用调试功能

    在使用Wing IDE开始调试的时候,需要设置断点的行,读取GetItemCount函数的返回.这可以通过单击行并选择Break工具栏条目,或通过单击行左边的黑色边缘.断点应该以实心红圈的形式出现: ...

  2. 关闭jetbrains ide support 正在调试此浏览器提示

    1 安装JetBrains IDE Support插件 插件地址 2 启用插件 3 设置访问端口 4 WebStorm中设置Live Edit 5 关闭"JetBrains IDE Supp ...

  3. C\C++ IDE 比较以及调试

    C\C++ IDE 比较以及调试 内容概要 这个作业属于哪个课程 2022面向对象程序设计 这个作业要求在哪里 2022面向对象程序设计寒假作业1 这个作业的目标 IDE 选择以及代码调试 作业正文 ...

  4. Python的功能模块[4] -> pdb/ipdb -> 实现 Python 的单步调试

    pdb / ipdb 模块 / pdb / ipdb Module pdb 和 ipdb 的主要作用是用于 Python 程序的单步调试,Python 的调试可参考链接. 下面是一个简单的使用示例 i ...

  5. 利用 PhpStorm、Idea 等 IDE 如何 运行/调试 Go 程序 ?

    以自己常用的 PhpStorm 为例 第一步:下载安装 Go插件 File -> Settings -> Plugins -> 输入关键字:Go 第二步:新建 Go项目 File - ...

  6. 在 Visual Studio 调试器中指定符号 (.pdb) 和源文件

    查找并指定符号文件和源文件:指定符号加载行为.使用符号和源服务器上:加载符号自动或在要求.   内容 查找符号 (.pdb) 文件 查找源文件   查找符号 (.pdb) 文件 说明 在之前的 Vis ...

  7. Python 代码使用pdb调试技巧

    Debug 对于任何开发人员都是一项非常重要的技能,它能够帮助我们准确的定位错误,发现程序中的 bug.python 提供了一系列 debug 的工具和包,可供我们选择.本文将主要阐述如何利用 pyt ...

  8. 使用pdb模块调试Python

    在Python中,我们需要debug时,有三种方式: 加log语句.最简单的方式是添加print()语句来输出我们想要获知的状态或者变量,好处是简单容易操作,坏处是debug完了之后,还需要将prin ...

  9. 使用 pdb 进行调试

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

随机推荐

  1. codeforces gym 100952 A B C D E F G H I J

    gym 100952 A #include <iostream> #include<cstdio> #include<cmath> #include<cstr ...

  2. 防止apk反编译的技术分析浅谈--内存修改器篇

    声明: 1.本帖转载自http://jingyan.baidu.com/article/a24b33cd509eb719fe002b94.html,仅供自用,勿喷 Apk反编译修改器有很多.拿其中的比 ...

  3. php7.1安装

    找到对应的镜像,右键复制链接地址这里下载的镜像是PHP7http://cn2.php.net/get/php-7.1.0.tar.gz/from/this/mirror 最后通过wget下载这个地址里 ...

  4. 深入探索C++对象模型(七)

    站在对象模型的尖端(On the Cusp of the Object Model) Template 下面是有关template的三个主要讨论方向: template的声明,基本上来说就是当你声明一 ...

  5. JS数组---转及补充--

    javascript之数组操作 1.数组的创建 var arr=Array();//写的角标数及直接写角标对应的内容简写 var arr=Array("我","爱&quo ...

  6. CentOS7,安装Tomcat8.5、JDK1.8,并设置开机启动(Linux CentOS Tomcat、JDK+Tomcat、Tomcat开机自启动)

    1.下载JDK1.8.Tomcat8 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.ht ...

  7. NOIP 2014 提高组 Day2

    期望得分:100+60+30=190 实际得分:70+60+30=160 https://www.luogu.org/problem/lists?name=&orderitem=pid& ...

  8. 树形dp的进阶 (一)

    ①树的重心的性质的运用 ②缩点以后寻找规律  树的直径! ③树形dp上的公式转换 ④和期望有关的树形dp + 一点排列组合的知识 ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ 一:Codeforces Round #364 ...

  9. vijos 1288 箱子游戏 计算几何

    背景 hzy是箱子迷,他很喜欢摆放箱子,这次他邀请zdq,skoier一起来玩game... 描述 地板上有一个正方形的大箱子和许多三角型的小箱子.所有的小箱子都在大箱子里面,同时,一些三角形的小箱子 ...

  10. PHP与数据库

    连接数据库 Connect 访问数据库的数据之前,先要与数据库建立连接,使用mysql_connect()方法与数据库建立连接. mysql_connect()参数 <?php //server ...