pdb 调试

以前写python一直用pycharm,调试啥的比较方便,最近要在远程服务器上调试一些程序,只有一个控制台就可以用pdb进行调试了。常用的只有几个命令。

break 或 b           设置断点
continue 或 c           继续执行程序
list 或 l                   查看当前行的代码段
step 或 s                   进入函数
return 或 r        执行代码直到从当前函数返回
exit 或 q                  中止并退出
next 或 n              执行下一行
pp                        打印变量的值
help                          帮助

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

使用的时候要import pdb再用pdb.set_trace()设置一个断点,运行程序的时候就会停在这。

1、在调试的地方设置断点

import pdb

pdb.set_trace() #  设置断点

2、(Pdb) n 进入下一步
3、(Pdb) list 打印代码
4、(Pdb) p b 打印变量
5、(Pdb) s 进入函数
6、(Pdb) !b="afdfd" !动态改变变量值
7 、(Pdb) q 退出

命令

  • l : 查看运行的代码段。

    (Pdb) l
    125                 if self.is_cuda:
    126                     outputs.append(Variable(data.cuda()))
    127                 else:
    128                     outputs.append(Variable(data))
    129             pdb.set_trace()
    130  ->         return tuple(outputs)
    131
    132
    133     class CaffeMultiBoxLoss(nn.Module):
    134         def __init__(self, layer, *input_shapes):
    135             super(CaffeMultiBoxLoss, self).__init__()
    (Pdb) c
    forward_backward time: 1948.931108 1948.931108
    > /data/zyj/caffe2pytorch/caffe_layers.py(119)forward()
    -> data = self.net.blobs[name].data

l + 起始行号,就可以查看行号的上下五行。

l + 起始行号 结束行号,可以查看这么一段。

按完l继续按回车键可以继续往下查看。

  • n :运行到下一条语句。
(Pdb) n
> /data/zyj/caffe2pytorch/caffe_layers.py(120)forward()
-> if self.data_save_debug:
  • s : 跳转到函数内部。
  • pp + 变量 : 打印变量的值
  • c : 运行到下个断点
  • r : 运行到函数退出。
(Pdb) r
--Return--
>n^H /data/zyj/caffe2pytorch/caffe_layers.py(130)forward()->(Variable...(GPU 0)]
, Variable...(GPU 0)]
)
-> return tuple(outputs)
  • help + [命令]: 帮助。
(Pdb) help

Documented commands (type help <topic>):
========================================
EOF    bt         cont      enable  jump  pp       run      unt
a      c          continue  exit    l     q        s        until
alias  cl         d         h       list  quit     step     up
args   clear      debug     help    n     r        tbreak   w
b      commands   disable   ignore  next  restart  u        whatis
break  condition  down      j       p     return   unalias  where 

Miscellaneous help topics:
==========================
exec  pdb

Undocumented commands:
======================
retval  rv
(Pdb) help n
n(ext)
Continue execution until the next line in the current function
is reached or it returns.
  • b + 行号:设置断点。
(Pdb) b 125
Breakpoint 2 at /data/zyj/caffe2pytorch/train_wider.py:125

就一个b就是是打印断点在哪。

(Pdb) b
Num Type         Disp Enb   Where
1   breakpoint   keep yes   at /data/zyj/caffe2pytorch/train_wider.py:121
2   breakpoint   keep yes   at /data/zyj/caffe2pytorch/train_wider.py:125
  • q : 退出。
  • j + 行号 :执行到行号
(Pdb) j 119
> /data/zyj/caffe2pytorch/train_wider.py(119)<module>()
-> for test_device_id in test_device_ids:
  • w : 打印函数栈
(Pdb) w
  /data/zyj/caffe2pytorch/train_wider.py(112)<module>()
-> net.cuda()
> /home/zyj/anaconda2/lib/python2.7/site-packages/torch/nn/modules/module.py(216)cuda()
-> return self._apply(lambda t: t.cuda(device))
  • cl + 断点号: 清除断点
(Pdb) b
Num Type         Disp Enb   Where
1   breakpoint   keep yes   at /data/zyj/caffe2pytorch/train_wider.py:121
2   breakpoint   keep yes   at /data/zyj/caffe2pytorch/train_wider.py:125
(Pdb) cl 1
Deleted breakpoint 1
(Pdb) b
Num Type         Disp Enb   Where
2   breakpoint   keep yes   at /data/zyj/caffe2pytorch/train_wider.py:125

原文地址:https://www.cnblogs.com/zhouxinfei/p/8688496.html

时间: 2024-10-17 15:39:40

pdb 调试的相关文章

python pdb调试

python -m pdb myscript.py #注意这会重启myscript.py 可以在程序中这么设置断点:import pdb; pdb.set_trace() 可以修改变量的值,但是要注意,前面加上!比如要修改final的值,应该这样!final="newvalue" 支持的命令:    p 打印变量    n next    step 细点运行    c continue    l list    a args 打印当前函数的参数    condition bpnumbe

[原创]Windows版Qemu2.5.1.1(带pdb调试文件)

本文提供release和debug两个版本的Qemu2.5.1.1二进制文件,由Clang with Microsoft CodeGen(简称clangc2)生成,目的是提供pdb调试文件方便调试分析Qemu的源代码. 先用msys2生成config-host.h等配置文件动态文件,然后用clangc2编译,用到的配置命令如下,所以有些特性是没有的.../qemu-2.5.1.1/configure --prefix=`pwd`/installdir --target-list=x86_64-s

python学习笔记之pdb调试

之前一直说要学python可还是一直停留在看的层面,昨天大神手把书教我pdb调试,说要摆脱IDE集成开发环境编程,感激不尽,立一个flag,python一定要入门! 1.进入方式 1)windows cmd下或者anaconda prompt下,cd 到count_pdf.py目录下 2)大神告诉还可以在count_pdf.py上按shift点击鼠标右键--在此处打开命令窗口 2.python count_pdf.py会直接得到输出结果,这个不用我多说.下面介绍如何一步步调试 python -m

Python 代码使用pdb调试技巧

Debug 对于任何开发人员都是一项非常重要的技能,它能够帮助我们准确的定位错误,发现程序中的 bug.python 提供了一系列 debug 的工具和包,可供我们选择.本文将主要阐述如何利用 python debug 相关工具进行 debug. 使用 pdb 进行调试 pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点.单步调试.进入函数调试.查看当前代码.查看栈片段.动态改变变量的值等.pdb 提供了一些常用的调试命令,详情见表

pdb 调试初步

不像在IDE中调试C++和java那样,pdb调试是一种交互式的调试:也就是说调试人员可以主动输入命令,而非点击鼠标,来控制调试的流程. 举个例子,以下代码中: 1 import pdb 2 a = "aaa" 3 pdb.set_trace() 4 b = "bbb" 5 c = "ccc" 6 final = a + b + c 7 print final 我想观察第2行 a = "aaa" 以后的流程,那么就在该语句后加

PDB调试方法

import pdb 功能 : 断点设置,单步执行, 查看代码,查看函数,追 踪变量等 命令: b break 设置断点 c continue 继续执行 n next 单步执行 s step 单步执行,可以进入函数内部 l list 查看代码段 pp 查看某个变量值 help 帮助 exit 退出pdb调试 进入pdb调试模式: pdb.set_trace() 直接进入PDB调试模式运行 : python3 -m pdb debug.py import sys # import pdb def

pdb调试

进入调试环境,在终端中输入   python3 -m pdb 文件 -m 表示模块 ,表示进入pdb,以调试的方式打开 l   查看代码 n     一步一步执行 c     continue  继续执行代码,执行到代码断点,没有断点只想到末尾 b      添加断点  b 4 clear   删除断点  clear 1 s     进入函数执行 p    打印变量值  p 变量 a   打印所有变量(xingcan) r    return  执行到函数末尾 -----------------

python 用pdb调试

简单调试 Python 程序 在 Python 中也可以像 gcc/gdb 那样调试程序,只要在运行 Python 程序时引入 pdb 模块(假设要调试的程序名为 d.py): $ vi d.py #!/usr/bin/python def main(): i, sum = 1, 0 for i in xrange(100): sum = sum + i print sum if __name__ == '__main__': main() $ python -m pdb d.py 运行上面的命

使用pdb调试python脚本

pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点.单步调试.进入函数调试.查看当前代码.查看栈片段.动态改变变量的值等.pdb 提供了一些常用的调试命令 命令 解释 break 或 b 设置断点 设置断点 continue 或 c 继续执行程序 list 或 l 查看当前行的代码段 step 或 s 进入函数 return 或 r 执行代码直到从当前函数返回 exit 或 q 中止并退出 next 或 n 执行下一行 pp 打印变

python学习笔记012——pdb调试

1 描述 pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能, 主要特性包括设置断点.单步调试.进入函数调试.查看当前代码.查看栈片段.动态改变变量的值等 调试作用 : 可以让程序单步执行,观察中间结果 可以设定指定断点,进行特定位置观察 2 调试命令 完整命令 简写命令 描述 args a 打印当前函数的参数 break b 设置断点 clear cl 清除断点 condition 无 设置条件断点 continue c或者cont 继续运行,知道遇到