牛逼的python库-python命令行调试工具pdb的基本用法

news/2024/4/26 3:47:13/文章来源:https://blog.csdn.net/qq_43347021/article/details/130281150

实际工作过程中都是采用linux远程ssh模式进行无界面开发,代码出问题需要调试,一般有两种解决方案

  • 使用print("")控制开输出信息
  • 使用log.debug(“”),写日志到控制台或则文件

然而但是这些通过修改源码的方式,侵入性太高,每次调试完可能还要删除,比较麻烦,那么我们就需要一个能够进行无侵入式的调试方式

简介

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

开启调试方式

  • 侵入式方法 (需要在被调试的代码中添加以下代码然后再正常运行代码)
import pdb
pdb.set_trace()
  • 非侵入式方法 (不用额外修改源代码,在命令行下直接运行就能调试)
python -m pdb demo.py

为了不修改源码,我们推荐第一种非侵入方案

简单使用

  • 待调试代码demo.py
print(111)
print(222)
a = 1
b = 2
c = a + bfor i in range(100, 106):print("index:", i)print("hello")
  • 进入调试
python -m pdb demo.py
d:\>python -m pdb demo.py
> d:\demo.py(1)<module>()
-> print(111)

-> 表示当前要执行的位置

  • 查看代码
    执行ll命令查看代码
    可以看到所有的代码,以及->指向当前要执行的代码行
(Pdb) ll1  -> print(111)2     print(222)3     a = 14     b = 25     c = a + b67     for i in range(100, 106):8         print("index:", i)9         print("hello")
(Pdb)
  • 执行下一行
    执行n命令,进入下一行,可以看到命令行打印出当前要执行的行的代码-> print(222)
(Pdb) n
111
> d:\demo.py(2)<module>()
-> print(222)
(Pdb) ll1     print(111)2  -> print(222)3     a = 14     b = 25     c = a + b67     for i in range(100, 106):8         print("index:", i)9         print("hello")
(Pdb)
  • 设置断点
    执行b 3命令,给第3行设置断点,可以看到第三行多了一个大写的B
(Pdb) b 3
Breakpoint 1 at d:\demo.py:3
(Pdb) ll1     print(111)2  -> print(222)3 B   a = 14     b = 25     c = a + b67     for i in range(100, 106):8         print("index:", i)9         print("hello")
  • 查看所有断点
    执行b命令,查看所有断点
(Pdb) b
Num Type         Disp Enb   Where
1   breakpoint   keep yes   at d:\demo.py:3
(Pdb)
  • 删除断点
    执行clear 1命令,删除Num为1的第一个断点
(Pdb) clear 1
Deleted breakpoint 1 at d:\demo.py:3
(Pdb) ll1     print(111)2  -> print(222)3     a = 14     b = 25     c = a + b67     for i in range(100, 106):8         print("index:", i)9         print("hello")
  • 下一个断点
    先给第三行和第七行打上断点,然后执行c命令,可以看到代码执行到第三行,再次执行c命令,代码执行到第七行
(Pdb) b 3
Breakpoint 2 at d:\demo.py:3
(Pdb) b 7
Breakpoint 3 at d:\demo.py:7
(Pdb) ll1     print(111)2  -> print(222)3 B   a = 14     b = 25     c = a + b67 B   for i in range(100, 106):8         print("index:", i)9         print("hello")
(Pdb) c
222
> d:\demo.py(3)<module>()
-> a = 1
(Pdb) c
> d:\demo.py(7)<module>()
-> for i in range(100, 106):
  • 查看变量值
    使用p a命令,查看a的值,执行p b,c查看b,c的值
(Pdb) p a
1
(Pdb) p b,c
(2, 3)
(Pdb)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_102892.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(原创)Flutter基础入门:手把手教你搭建Flutter混合项目

前言 Flutter是Google开源的构建用户界面&#xff08;UI&#xff09;工具包 支持在不同平台构建一致的ui效果 但在实际业务中&#xff0c;一般不会整个APP都用纯Flutter开发 尤其一些老的项目&#xff0c;会采用接入Flutter的方式来混合开发 那么今天就主要讲一下如何搭建一个…

SQLServer:Win/Linux环境安装及一键部署脚本

1. Win安装SQLServer CSDN已有完整安装流程&#xff0c;亲测可用。----》Windows安装SQLServer流程 2. Linux安装 SQLServer 2.1 设置镜像 curl https://packages.microsoft.com/config/rhel/7/mssql-server-2017.repo > /etc/yum.repos.d/mssql-server.repo 2.2 通过y…

深度学习模型参数量与训练数据量的平衡对泛化性能的影响

一、引言 深度学习模型在计算机视觉、自然语言处理等领域取得了显著的成果。为了获得泛化性能良好的模型&#xff0c;研究者需要在模型复杂度和训练数据量之间找到合适的平衡。本文将探讨这两者之间的关系以及如何在实际应用中实现最佳效果。 二、模型复杂度与训练数据量的关…

史上最严宝宝口粮新国标出台,DHA和维生素D可能无需额外补充了

自2023年2月22日起&#xff0c;我国婴幼儿配方食品&#xff08;以下简称配方奶&#xff09;新国标开始实施。这意味着2023年2月22日以后在中国上架销售的配方奶必须符合新国标&#xff0c;重新取得国家市场监督管理总局食品评审中心&#xff08;CFE-SAMR&#xff09;的注册。这…

改变思想,拥抱毒瘤,让公司走的更远

牛B的人物&#xff0c;早已经厌倦了中英文混杂&#xff0c;他们更进一步&#xff0c;使用中英文缩写&#xff0c;对普通人进行降维打击。更厉害的&#xff0c;造就新的名词&#xff0c;并科普出去。 有几项技术&#xff0c;我从心底里鄙视和厌恶&#xff0c;但每次在技术方案中…

【MCAL_Uart】-1.1-图文详解Uart串口协议

目录 1 什么是UART 2 UART的电平 3 UART的波特率 4 UART帧格式 4.1 start bit起始位 4.2 data bit数据位 4.3 parity bit奇偶校验位 4.4 stop bit停止位 5 什么是8-N-1 6 UART总线负载率计算 结尾 优质博文推荐阅读&#xff08;单击下方链接&#xff0c;即可跳转&am…

Linux驱动之在Ubuntu下编译驱动模块——学习笔记(12)

为了方便驱动开发学习&#xff0c;了解一下在Ubuntu上进行驱动编译的流程。 一、下载对应的内核源码 首先要通过 uname -a查询一下自己的内核版本。 我这里下载的是 https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.4.tar.gz 二、编译内核 &#xff08;1&a…

功能安全ISO26262 道路车辆 功能安全审核及评估方法第3部分:软件层面

道路车辆 功能安全审核及评估方法 第3部分&#xff1a;软件层面 Road vehicles - Functional Safety Audit and Assessment Method - Part 3: Software Level &#xff08;工作组草案&#xff09; 2022.4.15 前  言 本文件按照GB/T 1.1—2020《标准化工作导则 第1部分…

Pytorch深度学习笔记(十)多分类问题

课程推荐&#xff1a;09.多分类问题_哔哩哔哩_bilibili 目录 1. 多分类模型 2. softmax函数模型 3. Loss损失函数 4.实战MNIST Dataset 之前&#xff0c;在逻辑斯蒂回归中我们提到了二分类任务&#xff0c;现在我们讨论多分类问题。 1. 多分类模型 与二分类不同的是多分…

Hive基础和使用详解

文章目录 一、启动hive1. hive启动的前置条件2. 启动方式一: hive命令3. 方式二:使用jdbc连接hive 二、Hive常用交互命令1. hive -help 命令2. hive -e 命令3. hive -f 命令4. 退出hive窗口5. 在hive窗口中执行dfs -ls /&#xff1b; 三、Hive语法1.DDL语句1.1 创建数据库1.2 两…

Redis 数据存储原理

核心模块如图 1-10。 图1-10 图 1-10 Client 客户端&#xff0c;官方提供了 C 语言开发的客户端&#xff0c;可以发送命令&#xff0c;性能分析和测试等。 网络层事件驱动模型&#xff0c;基于 I/O 多路复用&#xff0c;封装了一个短小精悍的高性能 ae 库&#xff0c;全称是 …

【人工智能】遗传算法

人工智能算法---遗传算法&#xff08;基础篇&#xff09; 知识导图&#xff1a;遗传算法&#xff08;概念&#xff09;1.初始化种群二进制编码与解码 2.选择操作3.交叉操作4.评估操作5.终止操作 知识导图&#xff1a; 遗传算法&#xff08;概念&#xff09; 可以把遗传算法类比…

Docker 快速入门

1、Docker 简介 Docker是一个开源的容器引擎&#xff0c;它可以帮助我们更快地交付应用。Docker可将应用程序和基础设施层隔离&#xff0c;并且能将基础设施当作程序一样进行管理。使用Docker&#xff0c;可更快地打包、测试以及部署应用程序&#xff0c;并可减少从编写到部署…

python的智能换行函数(一堆烦乱的判断)

def zntxt(txt):line30 #设置单行长度js,e,s,rs,aa,nm,x,y{},[],txt,[],,[],0,0n 1 if ord(s[0]) > 127 else 0for i in range(len(s)):m1 if ord(s[i]) > 127 else 0if m!n:rs.append(aa)aas[i]elif ilen(s)-1:aas[i]rs.append(aa)else:aas[i]nmfor i in rs: for j in…

搜索引擎找外贸客户

说起搜索引擎&#xff0c;我们每个人都不陌生&#xff0c;也许第一时间就能想到平日经常使用的“百度一下”和凭借强大算法及丰富功能占据近85%市场份额的谷歌搜索&#xff08;Statista 2023年1月数据&#xff09;这些耳熟能详的搜索引擎。对于外贸人而言搜索引擎也是非常实用的…

一文谈谈文心一言对比ChatGPT4.0的差距

对于想体验文心一言的朋友&#xff0c;可以进行申请尝试&#xff0c;快速入口 如果想体验ChatGPT的朋友&#xff0c;可以自行fq注册&#xff1b;但是由于现在限制注册并且不稳定&#xff0c;对于不会用梯子不想注册的朋友可以使用这个进行访问&#xff0c;快速入口 关于ChatG…

PMP证书备考攻略+PMP知识点汇总

一&#xff0c;考PMP好处多 1.能力提升 大型项目&#xff0c;领导专业团队 2.升职加薪 晋升管理岗&#xff0c;优先升职加薪 3.招投标加分 具有PMP证书&#xff0c;企业招标有加分 4.转型利器 助力转型&#xff0c;拓宽职业发展 5.公司支持 企业鼓励学习&#xff0c;报销费用 6…

C++模板使用

感谢你的阅读&#xff01;&#xff01;&#xff01; 目录 感谢你的阅读&#xff01;&#xff01;&#xff01; 举个例子&#xff1a; template 有什么意义为什么要用模板 与typedef的区别 使用方法 模板&#xff1a;隐式实例化与显示实例化 和非模板函数以及多个模板类…

气传导耳机和骨传导耳机的区别是啥?气传导耳机有哪些优缺点?

本文主要讲解一下气传导耳机和骨传导耳机的区别、气传导耳机的优缺点&#xff0c;并推荐一些目前主流的气传导耳机款式&#xff0c;大家可以根据自身需求&#xff0c;选择自己感兴趣的部分观看。 气传导耳机和骨传导耳机不同点&#xff1a; 气传导耳机和骨传导耳机最大且最根…