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 程序提供了一种交互的源代码调试功能,主要特性包括设置断点.单步调试.进入函数调试.查看当前代码.查看栈片段.动态改变变 ...
随机推荐
- Linux之静态库与动态库20160706
所谓静态链接是指把要调用的函数或者过程链接到可执行文件中,成为可执行文件的一部分.当多个程序都调用相同函数时,内存中就会存在这个函数的多个拷贝,这样就浪费了宝贵的内存资源..so文件是共享库文件(动态 ...
- bundle adjustment原理(1)转载
转自菠菜僵尸 http://www.cnblogs.com/shepherd2015/p/5848430.html bundle adjustment原理(1) 那些光束平差的工具,比如SBA.SSB ...
- PID控制算法的C语言实现十一 模糊算法简介
在PID控制算法的C语言实现九中,文章已经对模糊PID的实质做了一个简要说明.本来打算等到完成毕业设计,工作稳定了再着力完成剩下的部分.鉴于网友的要求和信任,抽出时间来,对模糊PID做一个较为详细的论 ...
- Codeforces 585.D Lizard Era: Beginning
D. Lizard Era: Beginning time limit per test 2 seconds memory limit per test 256 megabytes input sta ...
- python 获取外网地址
def get_ip(): try: url = "http://cn.bing.com/search?q=ip&go=%E6%8F%90%E4%BA%A4&qs=n& ...
- Spring Boot 使用IntelliJ IDEA创建一个web开发实例(二)
1. 创建一个Controller类 package com.example.demo; import org.springframework.web.bind.annotation.RequestM ...
- [转]C/C++作用域详解
原文地址:http://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777433.html 作用域规则告诉我们一个变量的有效范围,它在哪儿创建,在 ...
- 使用qt写的简单的图片浏览器
功能特别简单,支持png,jpg,bmp,gif文件,支持自适应窗口大小,支持放大缩小,旋转功能还有点问题,支持上下按键选择图片 因为初学qt,所以很多东西都不太会,而且c++学的不是太好,没有怎么使 ...
- adb_usb.ini在adb找不到设备时
不能连接不上adb,如下方法解决,步骤描述不愿意看的话,直接使用本文最下面的批处理命令,方法copy粘贴到新建的bat文件里运行,或者直接粘贴到dos窗口运行. 1. 使用androidsdk目录中的 ...
- curl: (6) Couldn’t resolve host ‘www.ttlsa.com’【转】
上周, 部分站点出现Couldn't resolve host.....问题, 导致公司所有走api的程序都无法正常使用(系统redhat 6.3的都出现问题, redhat 5一切OK). 最后解 ...