一般开发者都是在 IDE 中进行程序的调试,当然,有 IDE 的话,当然首选 IDE 进行调试。

但是,有时我们的业务场景,限制只能在 Linux 命令行模式进行调试。

这时该怎么办呢?

今天,就给大家介绍一个 Linux 下调试 Python 程序的工具。

pdb简介

pdb 调试器是 Python 标准库提供的,因此最为方便,不需要安装其他组件,直接 import 后就能使用。

pdb 调试器提供了调试所需的大多数功能,如断点、单行步进、堆栈帧的检查等等。

常用参数

l # 查看运行到哪行代码

n # 单步运行,跳过函数

s # 单步运行,可进入函数

p 变量 # 查看变量值

b 行号 # 断点设置到第几行

b # 显示所有断点列表

cl 断点号 # 删除某个断点

cl # 删除所有断点

c # 跳到下一个断点

r # return 当前函数

exit # 退出

使用示例

本文 Python 环境:Python 3.5.2

我们先准备一小段演示程序:# -*- coding: utf-8 -*-

def add(a, b):

return a + b

if __name__ == '__main__':

print("===start===")

c = add(1, 3)

print("===end===")

使用方法 1:

运行 pdb 的最简单方法是从命令行,将程序作为参数传递来调试。$ python -m pdb test_pdb.py

这时,就开始单步执行了。

这种方法对代码没有侵入性,但是每次都需要设置断点。

使用方法 2:

在代码头部引入 pdb,然后可以在代码里,通过 pdb.set_trace() 来设置断点:# -*- coding: utf-8 -*-

import pdb

def add(a, b):

pdb.set_trace()

return a + b

if __name__ == '__main__':

print("===start===")

pdb.set_trace()

c = add(1, 3)

print("===end===")

此时,运行程序,就会自动跳转到设置的断点处:

总结

没了图形化页面,调试只能这么来了,不过还好,pdb 使用看着不难吧。

其实还有一些增强的调试器,比如 IPython 的 ipdb 和 pdb++,它们一般都提供了更好的用户体验,添加了有用的额外功能,例如语法突出高亮、更好的回溯和自省。

后面有机会再给大家分享吧!

python命令行调试_Linux 黑乎乎的命令行下,如何调试 Python?相关推荐

  1. ubuntu命令行语法_Linux中重定向命令行的总结(ubuntu学习第三讲)

    1. 标准输入的控制 语法:命令< 文件将文件做为命令的输入. 例如: mail -s "mail test" test@gzu521.com < file1 将文件f ...

  2. python开发工具及环境配置_python_在windows下安装配置python开发环境及Ulipad开发工具...

    最近开始学习Python,在网上寻找一下比较好的IDE.因为以前用C#做开发的,用Visual Studio作为IDE,鉴于用惯了VS这么强大的IDE,所以对IDE有一定的依赖性. Python的ID ...

  3. gdb 调试_一文入门Linux下gdb调试(二)

    点击"蓝字"关注我吧 作者:良知犹存 转载授权以及围观:欢迎添加微信号:Conscience_Remains 总述     今天我们介绍一下core dump文件,Core dum ...

  4. python程序可以在任何安装了解释器_Windows安装多个python解释器

    Windows安装多个python解释器 ​ 在windows10系统下安装两个不同版本的的python解释器,在通常情况下编译执行文件都是没问题的,但是加载或下载包的时候pip的使用就会出现问题,无 ...

  5. 【Flutter】Flutter 混合开发 ( Dart 代码调试 | Flutter 单独调试 | 混合模式下 Flutter 调试 )

    文章目录 前言 一.单独运行 Flutter 代码时调试 Dart 代码 二.混合模式下 Flutter 调试 Dart 代码 三.相关资源 前言 Flutter 混合开发集成步骤 : ① 在 And ...

  6. 命令行下 pdb 调试 Python 程序

    官方参考网站 The Python Debugger : https://docs.python.org/3/library/pdb.html gdb 调试命令的使用及总结:https://blog. ...

  7. Pycharm下运行调试Python项目时,当调试既需要给调试的程序传入命令行参数又需要程序在设置的断点处停下里查看变量时的解决方法

      今天在调试了一个复杂的Python项目,其中这个项目的调试需要事先从命令行读取参数,并且在调试期间需要再事先设置的断点处停下来.检查相关的变量.   问题是,在Pycharm的Terminal 输 ...

  8. python交互式窗口怎么换行_Python多版本情况下四种快速进入交互式命令行的操作技巧

    原标题:Python多版本情况下四种快速进入交互式命令行的操作技巧 因为工作需求或者学习需要等原因,部分小伙伴的电脑中同时安装了Python2和Python3,相信在Python多版本的切换中常常会遇 ...

  9. python命令行进入帮助模式_Python 命令行之旅:深入 click 之选项篇

    作者:HelloGitHub- Prodesire 一.前言 在上一篇文章中,我们介绍了 click 中的"参数",本文将继续深入了解 click,着重讲解它的"选项&q ...

最新文章

  1. 经典网络VGGNet介绍
  2. 几何画板表现两集合的差集的教程
  3. autocad完全应用指南_建筑绘图慢?580页的AUTOCAD完全自学必备指南,高效绘图不求人...
  4. ajax post提交数据_详解Ajax异步加载
  5. python快递分拣小程序_利用Python开发的ATM小程序
  6. 【Flink】Flink 状态恢复报错 StateMigrationException For heap backendsthe new state serializer must not be
  7. Linux系统(二)常用命令、进程管理
  8. DelayedWorkQueue踩坑笔记
  9. 《完全写作指南》读书笔记
  10. 怎样看oracle删掉没有,肿么查看以前Oracle卸载干净没
  11. F轮融资3.6亿美元,Keep能撑起20亿美元的估值吗?
  12. SM2证书的鉴定方法——续上文国密算法
  13. 做PPT只会直接插入图片?这样处理图片,让PPT的颜值瞬间提升几倍
  14. java 亚马逊 mws_使用Amazon Deep Java库进行Java中的机器学习
  15. 数据分析,把握商机 关键词采集工具助你挖掘潜在客户
  16. Linux命令行模式启动VMware时vmnet-dhcpd和vmnet-natd进程无法启动 VMware进程不全 解决办法
  17. openCV简易人脸考勤
  18. 2020湖南大学ACM新生杯题解- D Treasure Cave
  19. linux服务器开机管理,Linux服务器开机自动启动服务或脚本的方法
  20. Yahoo Programming Contest 2019.D.Ears(DP)

热门文章

  1. 2017-本命年里发生的那些事
  2. 如何访问sci-hub?(更新于2017年11月26日)
  3. 将3060独显笔记本升级为高级AI工作站
  4. 新娘JAVA_java新郎新娘结婚的问题
  5. org.apache.poi Excel列与行都是动态生成的_网络爬虫:Python动态网页爬虫2种技术方式及示例...
  6. 怎么理解面向对象编程【java基础第一讲】
  7. Markdown转Word文档在线工具
  8. pygame库和pgzero库
  9. quantopian寻找策略之mean_reversion
  10. 论文阅读:Contextual Translation Embedding for Visual Relationship Detection and SGG(PAMI2020)