当手边没有IDE,面对着python调试犯愁时,你就可以参考下本文;(pdb 命令调试)
参 考:http://docs.python.org/library/pdb.html
和 (pdb)help

用pdb进行python调试,用法基本和gdb差不多,
先看一个简单的例子:
epdb1.py .

    # epdb1.py -- experiment with the Python debugger, pdb

a = "aaa"

b = "bbb"

c = "ccc"

final = a + b + c

print final

比如要对这个程序进行调试:

1:在文件前面加上这一句,引入调试的模块。

import pdb

2:在要开始调试的一行加上pdb.set_trace()


文件变成:

 # epdb1.py -- experiment with the Python debugger, pdb

import pdb

a = "aaa"

  pdb.set_trace()

b = "bbb"

c = "ccc"

final = a + b + c

print final

可以运行这个程序,到断点出会停下来,和gdb类似,
可以执行命令:
直接回车是重复前一条命令!
p(print) 查看一个变量值
n(next) 下一步
s(step) 单步,可进入函数
c(continue)继续前进
l(list)看源代码

*********************************************************分割 线*********************************************************************************

用pdb调试有多种方式可选:

1. 命令行启动目标程序,加上-m参数,这样调用myscript.py的话断点就是程序的执行第一行之前
python -m pdb myscript.py

2. 在Python交互环境中启用调试
>>> import pdb
>>> import mymodule
>>> pdb.run(‘mymodule.test()’)

3. 比较常用的,就是在程序中间插入一段程序,相对于在一般IDE里面打上断点然后启动debug,不过这种方式是hardcode的

view plain copy to clipboard print ?
  1. <span style= "color: rgb(255, 119, 0); font-weight: bold;" > if </span>
  2. __name__ == <span style="color: rgb(72, 61, 139);" > "__main__" </span>
  3. :<br>
  4. a = <span style="color: rgb(255, 69, 0);" > 1 </span>
  5. <br>
  6. <span style="color: rgb(255, 119, 0); font-weight: bold;" > import </span>
  7. <span style="color: rgb(220, 20, 60);" >pdb</span>
  8. <br>
  9. <span style="color: rgb(220, 20, 60);" >pdb</span>
  10. .<span style="color: black;" >set_trace</span>
  11. <span style="color: black;" >(</span>
  12. <span style="color: black;" >)</span>
  13. <br>
  14. b = <span style="color: rgb(255, 69, 0);" > 2 </span>
  15. <br>
  16. c = a + b<br>
  17. <span style="color: rgb(255, 119, 0); font-weight: bold;" > print </span>
  18. <span style="color: black;" >(</span>
  19. c<span style="color: black;" >)</span>
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

>断点设置
   (Pdb)b  10 #断点设置在本py的第10行
   或(Pdb)b  ots.py:20 #断点设置到 ots.py第20行
   删除断点(Pdb)b #查看断点编号
            (Pdb)cl 2 #删除第2个断点
    
>运行
    (Pdb)n #单步运行
    (Pdb)s #细点运行 也就是会下到,方法
    (Pdb)c #跳到下个断点
>查看
    (Pdb)p param #查看当前 变量值
    (Pdb)l #查看运行到某处代码
    (Pdb)a #查看全部栈内变量

  • 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),退出调试

pdb python相关推荐

  1. pdb—Python调试器

    pdb-Python调试器 在python 3.8文档 Python 常用指引中已经详细介绍了pdb模块,此处为引用官方文档 该模块pdb为Python程序定义了一个交互式源代码调试器.它支持在源代码 ...

  2. python:pdb --- Python 的调试器

    python:pdb --- Python 的调试器 pdb 模块定义了一个交互式源代码调试器,用于 Python 程序.它支持在源码行间设置(有条件的)断点和单步执行,检视堆栈帧,列出源码列表,以及 ...

  3. [转]PDB——Python调试利器详解

    python 2.7 pdb官方文档:https://docs.python.org/2.7/library/pdb.html pdb是ptyhon内置的一个调试库,是调试python代码的好帮手,本 ...

  4. pdb python 命令_使用pdb进行Python调试(下)

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 显示表达式 与使用p和pp打印表达式类似,你可以使用命令display [expression]告诉pdb ...

  5. PDB python调试

    方法一: 先import pdb, 语句pdb.set_trace()设置断点 然后写好代码后直接运行 到set_trace()的地方会停下来, 方法二: 使用.pdbrc隐藏文件,提前写好进入pdb ...

  6. pdb python 命令_PDB——Python调试利器详解

    pdb是ptyhon内置的一个调试库,是调试python代码的好帮手,本文是对其用法的详细介绍. QuickStart 待调试的代码内容 文件名:test.py: # coding:utf-8 imp ...

  7. 【python】python的命令行调试工具—pdb(python debugger)

    目录 1 简介

  8. python计算排队时间_Python(pdb)-排队执行命令

    我正在实现一个"断点"系统以用于我的Python开发,该系统将允许我调用一个实质上调用pdb.set_trace()的函数. 我想实现的某些功能要求我在set_trace上下文中时 ...

  9. python计算排队时间_python计算排队时间_Python(pdb)-排队执行命令

    我正在实现一个"断点"系统以用于我的Python开发,该系统将允许我调用一个实质上调用pdb.set_trace()的函数. 我想实现的某些功能要求我在set_trace上下文中时 ...

最新文章

  1. php websocket 心跳包,websocket 心跳包重连
  2. CSP2021提高组复赛解析
  3. e5cc温控仪通讯参数设定_产品介绍||DeltaWiFi通讯型多功能电表DPMC520W
  4. 二进制方式搭建极简kubernetes1.10环境@centos7.3
  5. 辗转相除将分数化为连分数形式
  6. mybatis源码修改-实现数据源灵活切换
  7. httpclient架构原理介绍 连接池详解
  8. iphone打出空心心形_空心心形符号(类似的心形符号)
  9. 从鼠标点击位置发射射线检测是否点击到3D世界中的物体
  10. citra模拟器黑屏_Citra 3D模拟器怎么使用,Citra 3D模拟器使用教程
  11. 计算机图形学与地理信息科学,南京师范大学
  12. 网络信息安全之防火墙入反病毒技术 (七)
  13. 挂代理后git依然无法XXX
  14. AutoCAD Civil 3D装配道路
  15. 西电计算机通信原理,西电通信原理大作业
  16. ubuntu切换java版本
  17. ETL工具 鱼龙混杂,如何甄选?(开源、包开源、包数据库辅助功能、商用)
  18. 解决cmd中启动mysql出现服务名无效或无法启动
  19. Jquery 分页插件, 带你一步一步接入后台数据
  20. 概率论—贝叶斯定理 解析

热门文章

  1. DCMTK DCMScu和DCMScp 细节讨论
  2. procreate怎么画圆形
  3. Java最全的设计模式之结构型模式
  4. mybatis jdbcType的作用,无效的列类型错误解决办法
  5. 用 css before 多个词语加逗号,顿号等
  6. atlas单机模式代码_为什么说海盗战争游戏《ATLAS》很佛系?看看这些玩法就知道了...
  7. 如何修改默认调试器-windbg
  8. uniapp运行到浏览器
  9. 超详细进制转换(二进制、八进制、十进制、十六进制)详解
  10. Java工程师面试题之Spring Cloud(含答案)