当前位置:  编程技术>python

python pdb调试方法分享

    来源: 互联网  发布时间:2014-09-04

    本文导语:  代码如下:import pdbdef pdb_test(arg):    for i in range(arg):        print(i)    return argpdb.run("pdb_test(3)")   b 函数名、行号: 打断点,b可以查询所有的断点。 代码如下:(Pdb) b pdb_testBreakpoint 1 at c:usersplpccdesktoppdbtest.py:3(Pdb) bNum Type ...

代码如下:

import pdb

def pdb_test(arg):
    for i in range(arg):
        print(i)
    return arg

pdb.run("pdb_test(3)")
 

 b 函数名、行号:

打断点,b可以查询所有的断点。

代码如下:

(Pdb) b pdb_test
Breakpoint 1 at c:usersplpccdesktoppdbtest.py:3
(Pdb) b
Num Type         Disp Enb   Where
   breakpoint   keep yes   at c:usersplpccdesktoppdbtest.py:3
 

  c:

运行程序,直到遇到断点。

代码如下:

(Pdb) c
> c:usersplpccdesktoppdbtest.py(4)pdb_test()
-> for i in range(arg):

   l:

     查看断点周围的代码

代码如下:

(Pdb) l
    import pdb

B   def pdb_test(arg):
  ->      for i in range(arg):
             print(i)
       return arg

     pdb.run("pdb_test(3)")

 a:

    查看参数

代码如下:

(Pdb) a
arg = 3

 s, n:


    单步运行,区别s会进入路径中的函数,n不会进入

 p:

    查看表达式的值

代码如下:

(Pdb) p i

 condition:
 

条件断点,只有条件为true断点才命中

代码如下:

> c:usersplpccdesktoppdbtest.py(5)pdb_test()
-> print(i)
(Pdb) l
    import pdb

    def pdb_test(arg):
        for i in range(arg):
B->          print(i)
        return arg

    pdb.run("pdb_test(3)")
[EOF]
(Pdb) b
Num Type         Disp Enb   Where
breakpoint   keep yes   at c:usersplpccdesktoppdbtest.py:5
(Pdb) condition 2 i==1   //i==1时才触发断点2
New condition set for breakpoint 2.
(Pdb) b
Num Type         Disp Enb   Where
breakpoint   keep yes   at c:usersplpccdesktoppdbtest.py:5
 stop only if i==1
(Pdb) c
                    //i==0直接打印未断住
> c:usersplpccdesktoppdbtest.py(5)pdb_test()
-> print(i)             //触发断点,i==1
(Pdb) p i

bt:

查看调用堆栈

代码如下:

(Pdb) bt
c:python33libbdb.py(405)run()
-> exec(cmd, globals, locals)
(1)()
> c:usersplpccdesktoppdbtest.py(5)pdb_test()
-> print(i)
r:

   执行到函数返回
代码如下:

(Pdb) r

--Return--
> c:usersplpccdesktoppdbtest.py(6)pdb_test()->3 //代码位置、函数返回值->3
-> return arg                                       //代码位置的语句
(Pdb) l
    import pdb

    def pdb_test(arg):
        for i in range(arg):
            print(i)
 ->      return arg

    pdb.run("pdb_test(3)")

通过pdb.set_trace() 在代码中指定位置嵌入一个断点,通常可以通过调试开关来控制

代码如下:

import pdb

__DEBUG__ = True

def pdb_test(arg):
 if True == __DEBUG__:
     pdb.set_trace()
 for i in range(arg):
     print(i)
 return arg

pdb_test(3)

运行后在pdb.set_trace()位置被断住,当__DEBUG__ = False,代码正常运行

代码如下:

> c:usersplpccdesktoppdbtest.py(8)pdb_test()
-> for i in range(arg):
(Pdb) l
    __DEBUG__ = True

    def pdb_test(arg):
        if True == __DEBUG__:
            pdb.set_trace()
 ->      for i in range(arg):
            print(i)
       return arg

   pdb_test(3)
[EOF]

通过pdb.pm()进行事后调试,可以跟踪异常程序最后的堆载信息:

代码如下:

Traceback (most recent call last):
File "C:UsersplpccDesktoppdbTest.py", line 13, in
 pdb_test(3)
File "C:UsersplpccDesktoppdbTest.py", line 10, in pdb_test
 1/0
ZeroDivisionError: division by zero
>>> import pdb
>>> pdb.pm()
> c:usersplpccdesktoppdbtest.py(10)pdb_test()
-> 1/0
(Pdb) l
    def pdb_test(arg):
        if True == __DEBUG__:
            pdb.set_trace()
        for i in range(arg):
            print(i)
->          1/0
       return arg

   pdb_test(3)

    
 
 

您可能感兴趣的文章:

  • python之平台独立的调试工具winpdb介绍
  • 用python + hadoop streaming 分布式编程(一) -- 原理介绍,样例程序与本地调试
  • 如何使用linux下gdb来调试python程序
  • Python获取网页编码的方法及示例代码
  • 使用setup.py安装python包和卸载python包的方法
  • Python通过正则表达式获取,去除(过滤)或者替换HTML标签的几种方法
  • 如何运行Python程序的方法
  • HTML标签参考手册 iis7站长之家
  • Python3实现生成随机密码的方法
  • python list 合并连接字符串的方法
  • Python开发的单词频率统计工具wordsworth使用方法
  • Python实现多行注释的另类方法
  • Python判断变量是否已经定义的方法
  • python中定义结构体的方法
  • python字符串排序方法
  • 用Python脚本生成Android SALT扰码的方法
  • Python 条件判断的缩写方法
  • netbeans7安装python插件的方法图解
  • Python和php通信乱码问题解决方法
  • Python中无限元素列表的实现方法
  • win7 下搭建sublime的python开发环境的配置方法
  • SublimeText 2编译python出错的解决方法(The system cannot find the file specified)
  • 在Python安装MySQL支持模块的方法
  • python中文乱码的解决方法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • python 字符串split的用法分享
  • python赋值操作方法分享
  • python list转dict示例分享
  • python求素数示例分享
  • python抓取网页内容示例分享
  • python文件读写并使用mysql批量插入示例分享(python操作mysql)
  • linux系统使用python监控apache服务器进程脚本分享
  • python求斐波那契数列示例分享
  • python解析xml文件实例分享
  • vc6编写python扩展的方法分享
  • linux系统使用python监测系统负载脚本分享
  • python实现网页链接提取的方法分享
  • Python获取远程文件大小的函数代码分享
  • linux系统使用python获取内存使用信息脚本分享
  • win7安装python生成随机数代码分享
  • Python实现的石头剪子布代码分享
  • python实现人人网登录示例分享
  • python中cPickle用法例子分享
  • 使用python统计文件行数示例分享
  • python删除文件示例分享
  • Python GUI编程:tkinter实现一个窗口并居中代码
  • 让python同时兼容python2和python3的8个技巧分享
  • Python不使用print而直接输出二进制字符串
  • 不小心把linux自带的python卸载了,导致安装一个依赖原python的软件不能安装,请问该怎么办?
  • Python中实现json字符串和dict类型的互转
  • Python开发者社区整站源码 Pythoner
  • python异常信息堆栈输出到日志文件
  • python读取csv文件示例(python操作csv)
  • python下用os.execl执行centos下的系统时间同步命令ntpdate
  • python基础教程之python消息摘要算法使用示例
  • Python namedtuple对象json序列化/反序列化及对象恢复


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3