- 浏览: 2041091 次
- 性别:
- 来自: 北京
-
文章分类
- 全部博客 (651)
- ACE (35)
- BAT (9)
- C/C++ (116)
- fast-cgi (14)
- COM (27)
- python (59)
- CGI (4)
- C# (2)
- VC (84)
- DataBase (29)
- Linux (96)
- P2P (6)
- PHP (15)
- Web (6)
- Memcached (7)
- IME输入法 (11)
- 设计模式 (2)
- 搜索引擎 (1)
- 个人情感 (4)
- 笔试/面试 (3)
- 一亩三分地 (33)
- 历史 (2)
- 地理 (1)
- 人物 (3)
- 经济 (0)
- 不仅仅是笑哦 (43)
- 小故事大道理 (2)
- http://www.bjdsmyysjk120.com/ (0)
- http://www.bjdsmyy120.com/ (0)
- 它山之石可以攻玉 (15)
- 大学生你关注些什么 (28)
- 数据恢复 (1)
最新评论
-
luokaichuang:
这个规范里还是没有让我明白当浏览器上传文件时,STDIN的消息 ...
FastCGI规范 -
effort_fan:
好文章!学习了,谢谢分享!
com技术简介 -
vcell:
有错误os.walk(strPath)返回的已经是全部的文件和 ...
通过python获取目录的大小 -
feifeigd:
feifeigd 写道注意:文章中的CPP示例第二行 #inc ...
ATL入门:利用ATL编写简单的COM组件 -
feifeigd:
注意:文章中的CPP示例第二行 #include " ...
ATL入门:利用ATL编写简单的COM组件
如果使用过微软技术的朋友应该体会过微软的Visual Studio系列IDE给debug程序带来的方便,换了个工作就没有Visual Studio了,对于我这种从未在非GUI环境下调试过程序的人来说实在有点不爽,今天花了点时间看了一下Python自带的pdb库,发现用pdb来调 试程序还是很方便的,当然了,什么远程调试,多线程之类,pdb是搞不定的。
用pdb调试有多种方式可选:
1. 命令行启动目标程序,加上-m参数,这样调用myscript.py的话断点就是程序的执行第一行之前
python -m pdb myscript.py
2. 在Python交互环境中启用调试
>>> import pdb
>>> import mymodule
>>> pdb.run(‘mymodule.test()’)
3. 比较常用的,就是在程序中间插入一段程序,相对于在一般IDE里面打上断点然后启动debug,不过这种方式是hardcode的
if __name__ == "__main__":
a = 1
import pdb
pdb.set_trace()
b = 2
c = a + b
print (c)
然后正常运行脚本,到了pdb.set_trace()那就会定下来,就可以看到调试的提示符(Pdb)了
常用的调试命令
- h(elp),会打印当前版本Pdb可用的命令,如果要查询某个命令,可以输入 h [command],例如:“h l” — 查看list命令
- l(ist),可以列出当前将要运行的代码块
(Pdb) l
497 pdb.set_trace()
498 base_data = {}
499 new_data = {}
500 try:
501 execfile(base_file_name,{},base_data)
502 -> execfile(new_file_name,{},new_data)
503 except:
504 logger.writeLog(“error! load result log error!”)
505 print “load cmp logs error!”
506 raise Exception, “load cmp logs error!”
507
- b(reak), 设置断点,例如 “b 77″,就是在当前脚本的77行打上断点,还能输入函数名作为参数,断点就打到具体的函数入口,如果只敲b,会显示现有的全部断点
(Pdb) b 504
Breakpoint 4 at /home/jchen/regression/regressionLogCMP.py:504
- condition bpnumber [condition],设置条件断点,下面语句就是对第4个断点加上条件“a==3”
(Pdb) condition 4 a==3
(Pdb) b
Num Type Disp Enb Where
4 breakpoint keep yes at /home/jchen/regression/regressionLogCMP.py:504
stop only if a==3
- cl(ear),如果后面带有参数,就是清除指定的断点(我在Python2.4上从来没成功过!!!);如果不带参数就是清除所有的断点
(Pdb) cl
Clear all breaks? y
- disable/enable,禁用/激活断点
(Pdb) disable 3
(Pdb) b
Num Type Disp Enb Where
3 breakpoint keep no at /home/jchen/regression/regressionLogCMP.py:505
- n(ext),让程序运行下一行,如果当前语句有一个函数调用,用n是不会进入被调用的函数体中的
- s(tep),跟n相似,但是如果当前有一个函数调用,那么s会进入被调用的函数体中
- c(ont(inue)),让程序正常运行,直到遇到断点
- j(ump),让程序跳转到指定的行数
(Pdb) j 497
> /home/jchen/regression/regressionLogCMP.py(497)compareLog()
-> pdb.set_trace()
- a(rgs),打印当前函数的参数
(Pdb) a
_logger =
_base = ./base/MRM-8137.log
_new = ./new/MRM-8137.log
_caseid = 5550001
_toStepNum = 10
_cmpMap = {‘_bcmpbinarylog’: ‘True’, ‘_bcmpLog’: ‘True’, ‘_bcmpresp’: ‘True’}
- p,最有用的命令之一,打印某个变量
(Pdb) p _new
u’./new/MRM-8137.log’
- !,感叹号后面跟着语句,可以直接改变某个变量
- q(uit),退出调试
发现在命令行下调试程序也是一件挺有意思的事情,记录下来分享一下
发表评论
-
提供有偿反编译 python2.5,2.6,2.7 code
2014-04-03 16:32 1330提供有偿 反编译 python2.5, python2.6 ... -
Python:封装允许执行命令有超时的类
2012-08-24 17:35 4543封装允许执行命令有超时的类 #!/usr/bin/env ... -
Python 多线程编程及同步处理
2011-06-17 13:04 3125综述 多线程是程序设计中的一个重要方面,尤其是 ... -
python 去掉重复行
2011-06-16 12:15 6913#!/usr/bin/env python impor ... -
通过python获取目录的大小
2011-06-07 11:04 8955通过python获取目录的大小 需要用到的mod ... -
python 单元测试示例2
2011-05-17 11:51 1575#!/usr/bin/env python ... -
python 单元测试示例1
2011-05-17 11:51 1758#!/usr/bin/env python im ... -
python 获取文件md5
2011-05-13 14:01 8052#!/usr/bin/env python im ... -
python模拟windows获取设置ini
2011-05-05 12:20 1154#!/usr/bin/env python from ... -
python 解析 json
2011-04-25 15:42 3713#!/usr/bin/env python impor ... -
python时间处理
2011-04-23 19:25 731import time; import os; impor ... -
python简单的socket 服务器和客户端
2011-03-03 17:42 11550服务器端代码 if "__main__&qu ... -
python __file__ 与argv[0]
2011-02-28 11:25 36905python __file__ 与argv[0] 在py ... -
python os.path模块 简明文档
2011-02-28 11:10 2107os.path.abspath(path)取path的绝对目录 ... -
Python 用HTMLParser解析HTML文件
2011-02-16 20:44 35014Python 用HTMLParser解析HTML文件 ... -
python使用simplejson解析示例
2011-02-16 15:28 8252#!/usr/bin/env python imp ... -
python simplejson模块的使用方法
2011-02-16 14:38 10333python安装:easy_install simplejso ... -
python更新svn
2010-12-29 11:05 6338def UpdateSvn(strUser, strPwd, ... -
python 函数参数的传递(参数带星号的说明)
2010-12-23 17:59 1463python中函数参数的传递是通过赋值来传递的。函数参数的 ... -
python 之 分割参数getopt
2010-12-17 11:02 51440python 之 分割参数getopt ...
相关推荐
使用 Pdb调试 Python的程序的方式主要是下面的三种!下面逐一介绍 命令行加-m参数 命令行启动目标程序,加上-m参数,这样调用 testPdb.py的话断点就是程序执行的第一行之前 本文接下来重点讲到的实例展示就是使用...
在 Python 中也可以像 gcc/gdb 那样调试程序,只要在运行 Python 程序时引入 pdb 模块(假设要调试的程序名为 d.py): 复制代码 代码如下: $ vi d.py #!/usr/bin/python def main(): i, sum = 1, 0 for i in ...
WebPDB将PDB的调试功能与现代Web技术相结合,允许用户通过Web浏览器来远程调试Python程序。这带来了几个显著的优点: 1. **远程调试**:无论你在哪里,只要有网络连接,就可以通过Web浏览器访问并控制远程服务器上...
在Python中,语法错误可以被Python解释器发现,但逻辑上错误或变量使用错误却不容易发现,如果结果没有符合预期,则需要调试,一个很好的调试工具:Python自带的pdb模块。pdb是Python自带的调试模块。使用pdb模块可以...
Python自带的pdb库,发现用pdb来调试程序还是很方便的,当然了,什么远程调试,多线程之类,pdb是搞不定的。 用pdb调试有多种方式可选: 1. 命令行启动目标程序,加上-m参数,这样调用myscript.py的话断点就是程序的...
调试Python程序是软件开发过程中不可或缺的环节,尤其是当程序出现异常行为或难以追踪的bug时。PDB提供了丰富的命令供用户使用,以便更加高效地定位和解决问题。 首先,PDB模式的使用语法非常简单。用户可以通过在...
Python 脚本 pdb 调试工具使用 Python 脚本 pdb 调试工具是 Linux 上的一款功能齐全、使用方便的调试工具。作为一名运维工程师,学习 Python 语言通常是在 shell 基础上开始的,由于 shell 脚本的调试方法简单直接...
2. `_bsddb.pdb`:这个是Berkeley DB接口模块的pdb文件,允许Python程序使用键值存储数据库。 3. `_ssl.pdb`:这是Secure Sockets Layer (SSL) 和 Transport Layer Security (TLS) 模块的pdb文件,用于加密通信。 4....
Python的pdb模块是内置的调试器,它提供了一个交互式的环境,用于检查程序运行时的状态,帮助开发者定位和修复代码中的错误。pdb允许你在代码中设置断点,逐行执行代码,查看变量的值,以及跟踪函数调用的过程。下面...
描述中提到的"用于在VC6/2005下调试python的扩展和嵌入的库",意味着这些调试库是为在Visual C++ 6.0或2005环境下编写和调试Python扩展模块或嵌入式Python应用而设计的。VC++是Microsoft的C++编译器,这些版本支持...
4. `sqlite3.pdb`:SQLite3是Python的标准库中用于本地数据库操作的部分,这个pdb文件包含了其调试信息。 5. `pyw.pdb` 和 `py.pdb`:可能分别对应Python的窗口应用程序和普通脚本的调试信息。 6. `_freeze_...
6. `_ctypes.pdb`:ctypes是一个可以用来调用C库的Python模块,这个pdb文件用于调试使用ctypes进行C库交互的代码。 7. `pyexpat.pdb`:Expat是一个XML解析器,pyexpat是Python对它的封装。pdb文件用于XML处理中的...
"pdb"在Python中代表Python调试器(Python Debugger),是Python标准库中的一个模块,用于帮助开发者进行源代码级别的程序调试。 此压缩包“Python-2.7.10.amd64-pdb.zip”包含了一些关键的pdb文件,这些pdb文件是...
本文将详细介绍几种调试Python程序的方法,主要基于Python2.x版本。 首先,最简单直接的方法就是使用print语句。这种方法通过打印出程序中某些关键变量的值,来观察程序的执行流程和变量的变化情况。比如在上面的...
"pdb"在Python中通常指的是Python的调试器(Python Debugger),它是一个源码级的调试工具,用于帮助程序员在运行时检查程序的状态。 描述中的内容"python-2.7.5.amd64-pdb.zip"与标题相同,暗示这个压缩包包含的是...