广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python -- pdb调试工具
  • 510
分享到

Python -- pdb调试工具

调试工具Pythonpdb 2023-01-31 01:01:32 510人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

诗歌是一种忧郁的媒体,而诗人的使命是孤独的;     -- 北岛《时间的玫瑰》学习是一首深邃的民谣,而我们的任务是享受他。     -- 小Q 《20161203》--------------------------------------

诗歌是一种忧郁的媒体,而诗人的使命是孤独的;     -- 北岛《时间的玫瑰》

学习是一首深邃的民谣,而我们的任务是享受他。     -- 小Q 《20161203》

------------------------------------------------------------------------------------------------

c++时,老师教我们有gdb调试工具,在工作中会经常用到;

shell时,经理让我见到了"-x"跟踪调试参数,我每天都会用到;

python后,我就在寻找类似的参数和工具,谷歌给了我pdb工具;

【简介调试工具】

pdb
使用如下代码就相当于添加断点了:
import pdb    
pdb.set_trace()  #设置断点的地方,放置于程序中

ipdb
相对于Python,我们更趋向于ipython,有漂亮的颜色,和<tab>补全提示,以及bash混用;

相对于python内置的pdb,ipdb的优势也正在于此,其实就是对ipython的调用:

import ipdb
ipdb.set_trace()

pudb
是全屏的基于控制台的可视化调试器,有点像C语言中的Turbo C样式

wKioL1hCYYHRI1AAAACFZHN1Rc0206.png

为了支持pudb,需要在代码中插入
from pudb import set_trace; set_trace()  or  import pudb

rpdb
上面的两种方案要求有终端输出的情况下可行,有时候我们需要以后台形式执行python,此时是没有输出交互的,比如Django开发,程序由uwsgi管理执行,标准输出已重定向,通常只能通过日志输出信息。这个时候我们就需要一个远程调试工具。
rpdb会开启一个Socket连接,用于远程调试,默认端口是4444:
import rpdb
rpdb.set_trace(port=12345)
这样当程序被hang住之后,会监听该端口,可远程连接进行调试:
nc 127.0.0.1 12345

ripdb
rpdb只是pdb的远程版本,而ripdb就是将rpdb和ipdb的功能进行了整合,既有远程调试功能,又有漂亮的代码颜色:
import ripdb
ripdb.set_trace(port=12345)
如果还需要<Tab>自动补全功能,还需要对终端进行一下设置:
SAVED_STTY=`stty -g`; stty -icanon -opost -echo -echoe -echok -echoctl -echoke; nc 127.0.0.1 12345; stty $SAVED_STTY

【详解pdb/ipdb】

试验程序:传两个参数,进行加法和减法

import sys
def add(num1=0, num2=0):
    return int(num1) + int(num2)
def sub(num1=0, num2=0):
    return int(num1) - int(num2)
def main():
    print sys.argv
    addition = add(sys.argv[1], sys.argv[2])
    print addition
    subtraction = sub(sys.argv[1], sys.argv[2])
    print subtraction
if __name__ == '__main__':
    main()

1、进入PDB调试,其实就是一个交互式源代码调试器;修改程序:

import pdb   # 添加模块
import sys
def add(num1=0, num2=0):
    return int(num1) + int(num2)
def sub(num1=0, num2=0):
    return int(num1) - int(num2)
def main():
    print sys.argv
    pdb.set_trace()  # <-- Break point added here,设置的断点
    addition = add(sys.argv[1], sys.argv[2])
    print addition
    subtraction = sub(sys.argv[1], sys.argv[2])
    print subtraction
if __name__ == '__main__':
    main()

2、程序执行触发调试器 
执行:python 3_pdb.py  1 3  //程序在第一个断点处停止,如下

wKioL1hCYsmQWwQkAAAUkoyAtno306.png

此时我们可以看到程序在print sys.argv 处出了一个断点

并显示下一步将要执行 addition = add(sys.argv[1], sys.argv[2])

3、下一行  -> n 
输入“n”回车,将会执行addition = add(sys.argv[1], sys.argv[2]),然后打印出下一步操作;
但是会有一个问题,pdb没有进入到add函数中,下面的s选项可以解决此问题

wKiom1hCYzXSfvTeAAAhQqpbBnA422.png

4、打印 -> p 
在执行过程中我们想看,某个变量的打印值,除了c可以直接跳到下一个断点,打印期间所有值
“p”可以打印出某个变量的值,但前提是已经执行过这个变量。如下:

wKiom1hCY2WCTYo_AAAm3dLANS0678.png

5、单步 -> s 
“s”可以进入某个函数内部,然后再函数内使用n/p/b/c等
“r”将返回前面进入函数的返回语句

wKioL1hCY4_R6jV6AAA6AukGwK0704.png

6、添加动态断点 -> b 
在程序里,我们设置了一个断点,但当我们执行很长的代码时,忘了在脚本中设置断点

我们就可以直接用“b”在此环境下设置下一个断点位置
格式:b  行数
7、列表 -> l 
有时再调试时,不知道自己运行到哪,也不知道下面代码是什么了,为了不退出去去记某一行是什么,便可以执行小写“L”查看后面程序

wKiom1hCY-Din4hJAABvn5xA7H8570.png

8、动态分配变量 
在调试期间,可以分配变量帮助进行调试,
(Pdb) !n=5
(Pdb) p n
5

9、结束 -> q/exit 
在调试过程,想退出结束调试,可直接运行“q”或“exit”回车即可
--------------------------------------------------------------------------------------------------
PDB文档:https://docs.python.org/2/library/pdb.html 
而ipdb用法和pdb类似,只是更友好,更直观,如下: 

wKiom1hCZDGzIyVIAABRuVQqSMo534.png




--结束END--

本文标题: Python -- pdb调试工具

本文链接: https://www.lsjlt.com/news/184096.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python -- pdb调试工具
    诗歌是一种忧郁的媒体,而诗人的使命是孤独的;     -- 北岛《时间的玫瑰》学习是一首深邃的民谣,而我们的任务是享受他。     -- 小Q 《20161203》--------------------------------------...
    99+
    2023-01-31
    调试工具 Python pdb
  • python调试工具pdb怎么使用
    这篇文章主要讲解了“python调试工具pdb怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python调试工具pdb怎么使用”吧!一、pdb 有2种用法pdb:python deb...
    99+
    2023-07-04
  • python之linux下pdb试调
    编写一个简单程序用pdb试调一下,代码如下#!/usr/bin/env python # coding: utf-8 __author__ = 'www.py3study.com&#...
    99+
    2023-01-30
    linux python 试调
  • Python详解之调试:pdb
    如果使用过微软技术的朋友应该体会过微软的Visual Studio系列IDE给debug程序带来的方便,换了个工作就没有Visual Studio了,对于我这种从未在非GUI环境下调试过程序的人来说实在有点不爽,今天花了点时间看了一下Py...
    99+
    2023-01-31
    详解 Python pdb
  • python中调试器pdb怎么用
    这篇文章主要介绍了python中调试器pdb怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。使用PDB的方式有两种:1. 单步执行代码,通过命令 python -m pd...
    99+
    2023-06-07
  • python pdb调试器如何使用
    这篇文章主要介绍了python pdb调试器如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python pdb调试器如何使用文章都会有所收获,下面我们一起来看看吧。pdb 使用方法1...
    99+
    2023-07-02
  • 怎么用pdb进行Python调试
    本篇内容主要讲解“怎么用pdb进行Python调试”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用pdb进行Python调试”吧!调试应用有时是一个不受欢迎的工作,当你长期编码之后,只希望写...
    99+
    2023-06-20
  • 如何使用pdb进行Python调试
    调试应用有时是一个不受欢迎的工作,当你长期编码之后,只希望写的代码顺利运行。但是,很多情况下,我们需要学习一个新的语言功能或者实验检测新的方法,从而去理解其中运行的机制原理。 即使不考虑这样的场景,调试代码仍然是有必...
    99+
    2022-06-02
    pdb Python调试 python pdb使用
  • python pdb调试器及使用方法
    目录pdb 使用方法1. 常用命令a. 断点设置b. 运行c. 查看d. 其他2. 使用方法一3. 使用方法二pdb 使用方法 1. 常用命令 a. 断点设置 b(reak) [([...
    99+
    2022-11-11
  • python怎么使用pdb调试代码
    小编给大家分享一下python怎么使用pdb调试代码,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!使用pdb调试代码Python有自己的内置调试器-pdb。调试器...
    99+
    2023-06-27
  • socket调试工具、socket调试软件、tcp调试工具、tcp调试软件(sokit),C#sokit工具包及其sokit使用说明
    sokit真的非常好用,可做服务端,可做客户端 sokit是一款非常简单易用的tcp、udp调试工具,主要适用于专业的网络管理使用,它可以轻松查看网内的数据情况,能够有效地接收、发送、转发TCP或UDP数据包。 一、TCP调试说明   1...
    99+
    2023-08-31
    tcp/ip 网络 服务器
  • python调试工具Birdseye的使用教程
    目录1.快速上手2.在Pycharm中集成调试3.在VSCode中集成调试4.美中不足Birdseye是一个Python调试器,它在函数调用中记录表达式的值,并让你在函数退出后轻松查看它们,例如: 无论你如何运行或...
    99+
    2022-06-02
    python 调试工具 python Birdseye
  • 怎么使用Python的调试工具PySnooper
    本篇内容介绍了“怎么使用Python的调试工具PySnooper”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!PySnooper 使用起来十...
    99+
    2023-06-16
  • PHP中的调试工具
    随着互联网技术的发展,Web开发已逐渐成为了互联网领域最重要的一部分。然而,Web开发存在一种常见的问题,那就是调试问题。当Web应用程序出现错误时,我们需要能够快速、准确地找到错误,以便及时修复。PHP是常用的Web编程语言,下面我们将介...
    99+
    2023-05-24
    调试工具 PHP debugger。
  • 如何使用pdb进行python代码调试
    这篇文章主要讲解了“如何使用pdb进行python代码调试”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用pdb进行python代码调试”吧!pdb为python程序实现了一个交互式调...
    99+
    2023-06-27
  • 如何利用PDB实现Python程序调试
    本篇内容介绍了“如何利用PDB实现Python程序调试”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!如何进行Python程序调试 1.加入断...
    99+
    2023-06-17
  • python 测试工具
              对Web服务做Performance & Load测试,最常见的工具有Apache Benchmark俗称ab和商用工具LoadRunner。ab简单直接,功能也相对较弱,但我们经常看到的对一些Web serve...
    99+
    2023-01-31
    测试工具 python
  • 常用的Python代码调试工具总结
    前言 我自己常用的简单Python代码调试工具是IDLE和Sublime3,IDLE很少使用了,基本上用Sublime3稍微多一些,Sublime3因为简单方便更直观。(VSCode...
    99+
    2022-11-12
  • 如何在python中使用Birdseye调试工具
    这篇文章将为大家详细讲解有关如何在python中使用Birdseye调试工具,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Birdseye是一个Python调试器,它在函数调用中记录表达式的...
    99+
    2023-06-15
  • Python 3.2改进调试器PDB有哪些变化
    这篇文章主要为大家展示了“Python 3.2改进调试器PDB有哪些变化”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Python 3.2改进调试器PDB有哪些...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作