iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >使用spyder3调试python程序的实现步骤
  • 299
分享到

使用spyder3调试python程序的实现步骤

2024-04-02 19:04:59 299人浏览 薄情痞子

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

摘要

目录Spyder官方文档地址开始调试打断点的两种姿势普通的breakpoint带条件的breakpoint总结一下刚刚所讲的剩下的一些细节Step IntoReturn说是简明教程,

说是简明教程,其实是我自己尝试用spyder调试python程序的过程的一个记录,因为spyder的调试功能是基于pdb,而我又没有pdb的基础,所以刚开始上手时感觉很不习惯,而且那时我又很懒,没去找官方文档,仅仅在百度和csdn上找了找,没找到比较好的资料,于是放弃了,过了一段时间之后,突然又心血来潮,去找了官方文档,外加自己的一些尝试,总算入门了spyder的调试功能,特地记录下来与大家共享,我使用的spyder版本是3.1.4(使用pip list命令查看spyder版本)

Spyder官方文档地址

Http://Pythonhosted.org/spyder/

开始调试

先写一个简单的小程序用于调试:


# -*- coding: utf-8 -*-
"""
Created on Mon Aug 28 23:59:40 2017

@author: 燃烧杯
"""

a = 'a'
b = 'b'
c = 'c'
e = 'e'
f = 'f'
g = 'g'
h = 'h'
print(a)

我们暂时先不打断点,用debug的方式运行该代码试试

debug

点击spyder工具栏上的Debug file按钮,或者使用快捷键Ctrl+F5开始调试。

在ipython界面会输出如图所示的内容:

first debug

出现了ipdb提示符,说明我们已经进入了调试模式,上面输出的内容可以看出是代码的第一行,接着在提示符中输入c(continue的缩写,表示程序继续向下执行到下一个断点),会输出如下内容:

first_debug_end

程序执行结束,可见即使我们没有打断点,仍然会在第一句执行之前中断(经测试,中断的时候第一句还没有执行),这个和我用过的其他编译器不太一样(比如eclipse和IntelliJ,在不打断点的情况下会正常执行到底),一开始还让我困惑了一下,后来就适应了.
如果你仔细看刚才的工具栏截图的话,会发现在debug按钮组的第五个按钮和刚刚的c命令是一样的功能,但是不知道为什么,在我这个版本的spyder里有这个按钮一些bug(具体来说就是在程序执行结束之后不会自动退出pdb,而且之后再想使用q命令退出也退出不了,换而言之,就是卡死在了pdb里面),如果你使用的是更高版本的spyder的话,这个bug可能已经修复了,可以尝试一下.

打断点的两种姿势

普通的breakpoint

用spyder打断点的方法非常简单,只要在想打断点的那一行行首双击鼠标即可,如图所示,我们尝试建立一个断点:

break_point

在每次开始debug之前,先在spyder的ipython界面中输入%reset 把工作空间的所有变量清除,以免影响到我们接下来的测试.
按下Ctrl+F5开始debug,进行如图所示的操作:

to_breakpoint

然后我们就到达了断点处,从箭头(–>)以及d:\ide\pyproject\pdbtest\test1.py(12)<module>() 中的数字12可以看出程序刚刚执行到了第12行(也就是我们打断点的这一行),第12行到底有没有执行呢?只要测试一下f变量是否存在就可以了,尝试在ipdb中进行如下输入:

ipdb

!(python语句)的意思就是在当前状态下执行该python语句,我刚刚的用法的意思显然是查看变量内容,从!f 的错误信息可以看出f尚未定义,即第12行代码(f='f')还没有执行,查看e变量发现e变量已经被定义了,这说明第11行已经执行结束了。通过以上实验可以看出,spyder会在断点语句的执行之前中断

带条件的breakpoint

双击刚刚在第12行代码开头创建的“小红点”即可取消断点。
按住Ctrl+Shift,然后像刚才一样双击第12行行首,会弹出一个小框:

condition

在这个小框内可以输入断点的条件,可以是任意返回True或False的python语句,比如我输入


(a==4)and(b==5)

然后点击OK按钮,发现小红点上多了一个问号,这个表示条件断点(conditional breakpoint),开始debug试一下.

debug

发现程序只在第一句中断一下,断点根本就没有起作用,因为在断点的时候,a变量为'a',b变量为'b',不符合条件当然不会中断.

现在重新开始debug,然后连续按三遍Ctrl+F10,然后发现程序执行到了第十行:

ctrl_f10

其实Ctrl+F10是单行执行的意思,每按一次执行一行,相当于点击了工具栏上如下图所示的按钮:

run_current_line

这个时候我可以使用刚刚讲过的!(python语句)来给a,b临时指定一个值,在ipdb的提示符中输入!a=4;b=5 ,然后使用c命令继续执行,发现在条件断点处中断了,因为此时满足了我们刚刚给条件断点指定的条件:

condition_break

如果忘记了条件断点的条件是什么的话,可以按住Ctrl+Shift键双击“带问号的小红点”,然后就能看见条件是什么了,而且还可以修改条件,如果要取消断点的话,直接双击就可以了。

总结一下刚刚所讲的

  1. Ctrl+F5 以Debug模式运行文件
  2. 在debug之前记得用%reset 指令清空一下ipython工作空间中的变量,以免影响debug中变量值的查看
  3. 无论你是否打断点,都会在第一行语句执行之前中断一次
  4. !(python语句)可以在pdb提示符下执行python语句,可以用来查看变量值或者给变量临时指定值
  5. c命令或者Ctrl+F12可以让程序执行到下一个断点
  6. q命令退出调试
  7. Ctrl+F10 单行执行
  8. 双击行首设置断点,按住Ctrl+Shift 双击行首可以设置条件断点

剩下的一些细节

上面的例子已经包括了大多数常用的功能,如果曾经用过别的编译器的调试功能的话(如eclipse和IntelliJ等),看到这里就可以了,对于有调试经验的人来说,我下面要讲的两个功能只要看到按钮的名称就大概知道它是做什么的了.
如下:

step_into

return

Step Into

上面一张图的按钮的功能我们称之为Step Into(下面一张图的按钮的功能我们称之为return),用于进入一个函数体内部,为了更清楚的说明它的功能,我们给出一个例子,在spyder中创建如下程序:


# -*- coding: utf-8 -*-
"""
Created on Tue Aug 29 14:22:46 2017

@author: 燃烧杯
"""

def myTest():
    c = 'a'
    d = 'b'
    e = 'c'
    return c

a = 'a'
b = 'b'
c = myTest()
f = 'f'
print(a)

我们开始debug,不断地按Ctrl+F10 单行执行这个程序,当运行到c = myTest() 这句时注意一下:

not_step_into

不管myTest()中有多少代码都直接当做一行跳了过去,用q命令退出调试。
重新debug该文件,单行执行到c = myTest() 这行时按Ctrl+F11 使用Step Into功能,发现我们进入了函数内部的代码段:

step_into

这就Step Into的主要功能.

Return

Return的功能与Step Into的功能刚好相反,当使用Step Into进入函数之后,按Ctrl+Shift+F11 后会直接跳到该函数的执行的最后一行,此时在按一遍Ctrl+Shift+F11 或者Ctrl+F10 (单行执行)就可以跳出函数了,想要尝试的话可以自行在我上面给出的例子中尝试.

到此这篇关于使用spyder3调试python程序的实现步骤的文章就介绍到这了,更多相关spyder3调试python内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 使用spyder3调试python程序的实现步骤

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

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

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

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

下载Word文档
猜你喜欢
  • 使用spyder3调试python程序的实现步骤
    目录Spyder官方文档地址开始调试打断点的两种姿势普通的breakpoint带条件的breakpoint总结一下刚刚所讲的剩下的一些细节Step IntoReturn说是简明教程,...
    99+
    2024-04-02
  • vscode调试container中的程序的方法步骤
    在写cmu14-445的project时,我希望在本地vscode编辑代码,然后在docker中编译和测试代码。但是如果测试出了问题,直接在本地调试就变得麻烦了。所以希望利用vsco...
    99+
    2024-04-02
  • SpringBoot调用python接口的实现步骤
    目录一、前言二、方法1、代码2、运行一、前言 SpringBoot作为后端开发框架,有强大且方便的处理能力。但是作为一个结合数据分析+前台展示的网站来说,后端的数据处理模块使用py...
    99+
    2024-04-02
  • VSCode断点调试CMake工程项目的实现步骤
    断点调试在【排查代码错误】时,发挥着巨大的作用!本文旨在使用VS Code实现对CMake工程项目的【断点调试】。 初始状态 假设我们已经有一个CMake工程项目(比如从github...
    99+
    2024-04-02
  • 使用VSCode调试Electron主进程的方法步骤
    目录搭建环境文档调试渲染进程搭建环境 本文所使用的项目是  electron-quick-start 。 $ git clone https://github.com/el...
    99+
    2024-04-02
  • 使用goland调试远程代码的操作步骤
    前言 很多时候我们都在window上使用goland,并直接使用goland调试go代码。 但是很多时候我们的程序运行在Linux服务器上,虽然可以通过dlv命令行进行手动打断点调试...
    99+
    2024-04-02
  • python使用IPython调试debug程序
    目录安装使用方法优点提示和不足参考链接关于IPython使用的入门文章,主要介绍了如何在程序代码中嵌入ipython用于调试,并分析了优点与不足。 在 Python 中编程时,我会花...
    99+
    2024-04-02
  • 如何利用PDB实现Python程序调试
    本篇内容介绍了“如何利用PDB实现Python程序调试”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!如何进行Python程序调试 1.加入断...
    99+
    2023-06-17
  • 使用VSCode调试Electron主进程的步骤是什么
    这篇文章将为大家详细讲解有关使用VSCode调试Electron主进程的步骤是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。搭建环境本文所使用的项目是  electron-qu...
    99+
    2023-06-28
  • Java调用Zookeeper的实现步骤
    目录watch机制常用APIJAVA调用watch机制 Zookeeper watch是一种监听通知机制,可以随时监听一些数据的变化,从而实现数据的及时性。 Zookeeper所有的...
    99+
    2024-04-02
  • 用 ipdb 调试 Python 程序
    ==> 安装  pip install ipdb==> 使用    ---> python -m ipdb xxx.py  程序内部: from ipdb import set_trace set_trace()==>...
    99+
    2023-01-31
    程序 ipdb Python
  • 使用Webpack构建多页面程序的实现步骤
    使用webpack搭建单页面程序十分常见,但在实际开发中我们可能还会有开发多页面程序的需求,因此我研究了一下如何使用webpack搭建多页面程序。 原理 将每个页面所在的文件夹都看...
    99+
    2024-04-02
  • MFC程序中使用QT开发界面的实现步骤
    目录添加QT依赖添加信号槽机制添加qt界面配置元编译过程一些问题的处理测试信号槽使用qt designer 设计界面如果你有一个现成的MFC项目在做维护,但是你厌倦了使用MFC繁琐的...
    99+
    2024-04-02
  • python程序中调用其他程序的实现
    目录1.os.system函数2.subprocess模块1.os.system函数 wget 是一个下载软件的程序,如果已经下载好该软件,可以用py调用该软件。假如该软件目录在d:...
    99+
    2023-02-01
    python程序调用其他程序 python 调用其他程序
  • Python调用jar包的步骤
    Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。在软件开发过程中,有时需要在 Python 项目中利用既有的 Java 代码,已达到节省时间和开发成本的目...
    99+
    2023-01-31
    步骤 Python jar
  • 单元测试中使用 cadence RegisterDelayedCallback 实现相同的流程步骤
    对于一个Golang开发者来说,牢固扎实的基础是十分重要的,编程网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《单元测试中使用 cadence RegisterDelayedCallba...
    99+
    2024-04-04
  • spring retry实现方法请求重试的使用步骤
    目录1 spring-retry是什么?2 使用步骤2.1 引入maven库2.2 在spring启动类上开启重试功能2.3 公共业务代码2.4 传统的重试做法2.5 使用sprin...
    99+
    2024-04-02
  • sql server2008调试存储过程的完整步骤
    前言 SQLSERVER 2005中不知因何去掉了很重要的DEBUGGER功能,要调试,必须要安装VS2005专业版或者更高版本。非常不方便。 还好,SQLSERVER 2008中这个很重要而且方便的功能又...
    99+
    2024-04-02
  • 怎么使用Flex调试程序
    这篇文章主要为大家展示了“怎么使用Flex调试程序”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么使用Flex调试程序”这篇文章吧。使用Flex调试程序如果Flex程序编译时报错,需要修改程序...
    99+
    2023-06-17
  • PyCharm程序调试实用指南
    PyCharm程序调试实用指南 PyCharm是一款Python开发神器,它的程序调试功能可以帮助我们快速定位代码中的问题并进行修复。在进行Python开发时,程序出现问题时需要快速定位问题所在,否则...
    99+
    2023-09-23
    pycharm python ide
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作