使用spyder3调试python程序的简明教程

article/2025/9/1 2:04:04

说是简明教程,其实是我自己尝试用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键双击“带问号的小红点”,然后就能看见条件是什么了,而且还可以修改条件,如果要取消断点的话,直接双击就可以了。

总结一下刚刚所讲的


  • Ctrl+F5 以Debug模式运行文件
  • 在debug之前记得用%reset 指令清空一下ipython工作空间中的变量,以免影响debug中变量值的查看
  • 无论你是否打断点,都会在第一行语句执行之前中断一次
  • !(python语句)可以在pdb提示符下执行python语句,可以用来查看变量值或者给变量临时指定值
  • c命令或者Ctrl+F12可以让程序执行到下一个断点
  • q命令退出调试
  • Ctrl+F10 单行执行
  • 双击行首设置断点,按住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 ca = '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 (单行执行)就可以跳出函数了,想要尝试的话可以自行在我上面给出的例子中尝试.

End


感谢阅读,希望世界上的bug越来越少(手动滑稽)


http://chatgpt.dhexx.cn/article/K1vlKQMg.shtml

相关文章

python菜鸡使用spyder经验总结(持续更新)

&#xff08;编程经验丰富者不要看&#xff09; 初学者偶尔发现的提高调代码效率的小技巧 目录 1.#%% 代码分块 2.快捷键 3.错误定位 4.选择变量和整行 5.anaconda和spyder升级 6.代码运行过程中输出分隔线(代码还蛮可爱的) 7.切换代码选项卡&#xff0c;切换代码文件…

Spyder学习使用总结

在学习机器学习的路上一直折腾折腾着&#xff0c;之前用的pycharm&#xff0c;但是经师兄指点&#xff0c;发现spyder有着更好的控制台&#xff0c;变量显示等方便之处&#xff0c;一路磕磕绊绊的转到lspyder的使用上&#xff0c;在搜集了许多帖子之后&#xff0c;结合自己的修…

Python基础 | Spyder的使用

文章目录 打开Spyder修改显示主题修改语言Spyder的核心构建块代码编辑区基本操作文件操作运行操作 IPython控制台基本操作执行文件式编程执行交互式编程 总结 微信公众号推文&#xff1a;https://mp.weixin.qq.com/s/b7zBCY0-8Hte7rrtpwksOQ Spyder是一个用于科学计算的使用Pyt…

Anaconda安装教程(使用Spyder)

往期文章 1. Python语言快速入门(上) 2. Python语言快速入门(下) 1 前言 今天就简单说一下Anaconda的基本安装&#xff0c;Anaconda指的是一个开源的发行版本&#xff0c;其包含了conda、Python等180多个科学包及其依赖项。你可以这样理解&#xff0c;一个是官方的Python版本&a…

spyder的使用(python编辑器)

spyder是Anaconda种自带的一种python编辑器&#xff0c;这个编辑器里面保存的是py文件。 spyder 创建工程运行&#xff08;1&#xff09;运行整个脚本文件&#xff08;2&#xff09;运行当前代码块&#xff08;3&#xff09;运行当前代码块&#xff0c;并跳至下一个&#xff0…

Spyder入门使用教程

Spyder入门使用教程 Spyder汉化 Spyder汉化博客 创建项目 首先介绍Spyder布局&#xff0c;主要分上面的功能栏和下方的三个区块 点击创建新的项目&#xff0c;选择项目存放的目录&#xff0c;输入项目名&#xff0c;完成项目创建。 创建新的文件&#xff0c;按Ctrl S 保…

anaconda spyder使用技巧

spyder——很简单的python代码编辑器。 目录 界面布局 快捷键 设置语言 设置默认打开文件夹 高级技巧——调试代码 高级技巧——创建spyder虚拟环境 恢复默认布局 英语阅读难的话&#xff0c;可以先跳到设置语言~ 界面布局 选项卡 file&#xff08;文件&#xff09;选项卡下…

前端几款好用编辑器

工欲善其事&#xff0c;必先利其器&#xff0c;作为一个前端工程师&#xff0c;有个好用且适合自己的编辑器是很重要的&#xff0c;现在我将为大家介绍几款广受大家欢迎的前端编辑器。 VSCode 微软出厂的高颜值编辑器加载大文件几乎秒开&#xff0c;运行速度很快跨平台的文本编…

GitHub 上的开源前端编辑器

当我们要开发一个博客、社区、论坛等内容生产平台的时候&#xff0c;为用户挑选一个 UI 优雅简洁、交互丝滑顺畅的文本编辑器总是必不可少的一步。 一个完整的前端文本编辑器&#xff0c;要求前端工程师将设计、交互、编码、测试、组件化、模块化、扩展性等各方面问题都综合考…

前端开发常用的6种编辑器

一、Visual Studio Code 下载地址:https://code.visualstudio.com/ 功能介绍: 微软在2015年4月30日Build 开发者大会上正式宣布了 Visual Studio Code 项目:一个运行于 Mac OS X、Windows和 Linux 之上的,针对于编写现代 Web 和云应用的跨平台源代码编辑器。 Visual St…

前端核武器:开源FrontendBlocks所见即所得低代码编辑器让所有人都能做前端布局

项目背景 前端开发领域中&#xff0c;最为头疼的就是页面布局&#xff0c;即便是工作经验丰富的老前端程序员&#xff0c;在面对一个新的设计稿时仍旧会有很多需要从头开始敲的布局。那么为什么不让设计师直接来操刀写前端呢&#xff1f; 设计师写前端由于前端布局不太熟练&am…

初学前端必备的Visual Studio Code编辑器

简介 VSCode&#xff08;全称&#xff1a;Visual Studio Code&#xff09;是一款由微软开发且跨平台的免费源代码编辑器。 该软件支持语法高亮、代码自动补全&#xff08;又称 IntelliSense&#xff09;、代码重构、查看定义功能&#xff0c;并且内置了命令行工具和 Git 版本控…

web前端编辑器,sublime使用技巧和方法

工欲善其事必先利其器&#xff0c;一个好的web前端编辑器可以加速你的web开发进度。 web前端编辑器有很多&#xff0c;个人觉得每个编辑器都有其自身的有点&#xff0c;适合自己的用的就是好的编辑器。 这些编辑器你是否用过&#xff0c;你喜欢用哪些代码编辑器&#xff1f; …

前端必备的开发工具推荐——VScode代码编辑器

前言 VSCode(全称:Visual Studio Code)是一款由微软开发且跨平台的免费源代码编辑器。该软件支持语法高亮、代码自动补全(又称 IntelliSense)、代码重构、查看定义功能,并且内置了命令行工具和 Git 版本控制系统。用户可以更改主题和键盘快捷方式实现个性化设置,…

强烈推荐:web前端目前最受欢迎的4款编辑器

2005年以后&#xff0c;互联网进入Web2.0时代&#xff0c;各种类似桌面软件的Web应用大量涌现&#xff0c;前端由此发生了翻天覆地的变化。在这漫长的岁月里&#xff0c;前端开发工具也在不断的演变更新&#xff0c;作为一枚从事了3年多前端的工作者&#xff0c;总结一波目前比…

初识百度前端编辑器UEditor

专业医养综合系统的开发框架已经基本构建完成&#xff0c;采用了B/S模式&#xff0c;以适应未来分布式和云平台应用。 对于医院信息系统来说&#xff0c;电子病历是关键的功能模块之一&#xff0c;而B/S结构的电子病历并不常见&#xff0c;因此为了配合开发框架的使用&#xff…

前端页面插件集成-Markdown编辑器

页面插件集成-Markdown 下载MarkDown的插件包引入css、js、jquary文件定义一个textarea区域作为MarkDown的载体初始化Markdown编辑器最终效果 下载MarkDown的插件包 下载地址如下&#xff1a; 下载传送门 点击Github下载&#xff0c;然后解压 解压之后将如下文件夹和 js 文件c…

前端——代码编辑器

1.codemirror插件 相关网址 Vue 官方插件库推荐的集成实现 这个实现做的比较全面&#xff0c;但不支持动态语法高亮的切换codemirror 支持的语言类型codemirror 官网 参考文章&#xff1a; vue-codemirror 代码编辑器 - 简书 2.vue-codemirror插件 相关网址 1.vue-codemir…

三款好用的前端代码编辑器推荐

想学web前端开发&#xff0c;那么必然离不开一款实用的代码编辑器&#xff0c;了解一些代码编辑器及其功能和快捷方式可以让开发人员在工作效率方面获得巨大优势。下面小千就整理了三款常用web前端代码编辑器&#xff0c;一起来看看吧。 1、Visual Studio Code 微软的Visual…

这7个web前端开发写代码软件,你过用几个?

群里的朋友,经常问到web前端开发写代码用那个软件好?今天在这里统一回答下,主流的web前端开发写代码的软件有这些Webstorm、Vscode、Sublime Text、HBuilder、Dreamweaver、notepad++、editplus等,做前端这么多年了,下面谈下我的使用感受吧。 1.WebStorm【推荐】 WebStorm…