想了一下,觉得需要写这个内容,因为自己折腾了很久,网上内容又超级乱很不全

进入spyder后,随便打开一个文件
spyder最上栏有如下几个图标

从左到右分别是:

  • debug file (ctrl+f5)
  • run current line (ctrl+f10)
  • step into function or method of current line (ctrl+f11)
  • run until current function or method returns (ctrl+shift+f11)
  • continue execution until next breakpoint (ctrl+f12)
  • stop debugging (ctrl+shift+f12)

即:(记住下面的标号,我以后使用标号表示对应按钮)

  • 1开始调试
  • 2调试当前行(每点击一次执行一行)
  • 3进入当前行对应的函数或方法(下面会解释)
  • 4退出函数或方法(在3进入函数后进行debug,如果已经找到了问题所在想退出函数,可以使用4)
  • 5执行下一个断点(即从一个断点直接进入下一个断点)
  • 6结束调试

举例:

import numpy as npdef fun1():a=[1,2,4]b=[4,5,2]c=a+bprint(c)def fun2():w = -1k = 3y = np.abs(w*k)return ytest1 = fun1()
test2 = fun2()

通常我们写完一个函数之后,如fun1,c=a+b,但是我们想知道这两个相加之后得到的c是不是a,b中对应元素相加,这个时候通常我们可以print©出来看看,但是对于复杂的函数这样非常不方便,每次都要print。鉴于此,我们采用调试的方法。现在我们的目标是:知道函数/方法 fun1中的c是多少。

方法1,设置断点

由于我们要知道的是c,因此直接在c=a+b的下一行设置断点(断点设置方法:直接在要设置行的行数外鼠标左键双击,取消断点也是对着红色小点双击),如:

然后直接点开始调试按钮(即上面提到的标号1),从右下角的console就可以看到已经运行到了那一行(有个箭头指着那一行)

而在右上方直接可以看到变量里面已经出来了a,b,c。然后点击标号6结束即可(下面内容运行完之后重新运行都要先结束,即点击标号6,我将不再强调这一点)

当然我们也可以设置断点在c=a+b那一行,然后点击标号1调试,此时会运行到断点c=a+b这一行(但是记住,当箭头指到这一行的时候是还没执行的,是表示即将执行这一行),我们可以看到右上边的变量a和b都出来了,这个时候我们点击标号2单步执行,这样就可以执行c这一行了,得到上面一行的结果。

方法2,进入函数

进入函数,顾名思义,即如果我们定义一个函数,如fun1(),我们在函数内有一些量,如c=a+b,我们想知道这个量是多少,此时我们可以通过标号3进入函数体内,然后在调试。
此时我们不设置断点(或将断点设置在test1=fun1()这一行),先考虑第一种不设置断点,这样点击标号1调试,右下角的console可以见箭头是指在第一行的import …这一行的。这样点击标号2单步执行,然后我们会看到下一步是def fun1()这一行,(此时点击标号3进入函数是没用的),我们一直点击标号2直到运行到test = fun1(),然后点击标号3进入函数,看到又重新回到了def fun1()这一行。这个时候表示,我们已经进入了函数fun1,所以点击标号2单步执行一直执行到c=a+b这一行的下一行即可。

:注意:

如果我们只是针对某个函数体,如fun1(),更快的方法是,我们直接在test1 = fun1()这一行设置断点,然后在点击标号1调试后,直接点击标号5进入下一个调试点,这个时候直接跳到test1 = fun1(),再执行上面的方法进入函数。

类的调试class

类的调试则不能没有实例,如下

import numpy as npclass Test_fun():def __init__(self):pass def fun1(self):a=[1,2,4]b=[4,5,2]c=a+bprint(c)def fun2(self):w = -1k = 3y = np.abs(w*k)return y

调试点为

此时进行debug则不能进入函数fun1和fun2里面,这个时候需要在外面使用实例,增加test1,test2,如下

import numpy as npclass Test_fun():def __init__(self):pass def fun1(self):a=[1,2,4]b=[4,5,2]c=a+bprint(c)def fun2(self):w = -1k = 3y = np.abs(w*k)return y
#
test1 = Test_fun().fun1()
test2 = Test_fun().fun2()

如果只想看fun1里的参数,只需要在外面增加test1实例即可。

spyder 断点调试python代码相关推荐

  1. 如何使用PyCharm调试Python代码

    by Ori Roza 通过Ori Roza 如何使用PyCharm调试Python代码 (How to use PyCharm to debug your Python code) Debuggin ...

  2. pdb+ipdb 调试 Python代码

    pdb+ipdb 调试 Python代码 pdb 和 ipdb 的主要作用是用于 Python 程序的单步调试,Python 的调试可参考链接. ipdb exports functions to a ...

  3. Eclipse中调试Python代码--调试FWTools2.4.7中的gdal_retile.py

    Eclipse中调试Python代码 Gdal_retile.py是用于对遥感影像创建金字塔,近期本人想读懂改程序中的代码.读懂代码的较好方式就是单步调试,但是由于之前没有学过Python语言,不但对 ...

  4. Python - 调试Python代码的方法

    调试(debug) 将可疑环节的变量逐步打印出来,从而检查哪里是否有错. 让程序一部分一部分地运行起来.从核心功能开始,写一点,运行一点,再修改一点. 利用工具,例如一些IDE中的调试功能,提高调试效 ...

  5. 答应我,调试Python代码,不要再用Print了!

    相信大部分人学习Python,肯定会用print()这个内置函数,来调试代码的. 那么在一个大型的项目中,如果你也是使用print来调试你的Python代码,你就会发现你的终端有多个输出. 那么你便不 ...

  6. chrome浏览器断点调试js代码 和 idea断点调试java代码

    文章目录 chrome调试js代码 idea调试java代码 chrome调试js代码 Chrome调试快捷键总结 快捷键 功能 F10 (step over) 单步调试.步过,遇到函数时也当成一个语 ...

  7. python手机编程调试_在Linux下调试Python代码的各种方法

    这是一个我用于调试或分析工具概述,不一定是完整全面,如果你知道更好的工具,请在评论处标记. 日志 是的,的确,不得不强调足够的日志记录对应用程序是多么的重要.您应该记录重要的东西,如果你的记录足够好的 ...

  8. 使用pycharm调试Python代码时F8快捷键失效

    一.问题现象 使用pycharm调试Python工程时,直接按F8,就是不移动,必须用鼠标去点击才能移动. 二.问题原因排查 由于在阅读文献,同时打开了有道词典,而网易有道词典的取词关开快捷键也是&q ...

  9. PHP笔记-使用PHPStorm断点调试php代码

    最近在撸php,书上都不交断点调试,这尼玛坑得很,没有断点的开发程序,就是坑,通过查阅和摸索,调试成功,在此记录下: php版本:7.1 phpstorm版本:2020.3 首先运行下: <?p ...

最新文章

  1. 1-2-Active Directory 域服务准备概述
  2. tf.keras.layers.Reshape 示例
  3. hadoop hive hbase 集群搭建
  4. office2016打开PPT出现解决VBE6EXT.OLB不能被加载问题的解决办法
  5. 如何在 C# 中使用 AutoMapper
  6. coco2dx c++ HTTP实现
  7. 复函数图像怎么画_如何画出复平面上的网格在复函数映射下的图像?
  8. POJ1159 Palindrome(dp)
  9. Python下time模块和datetime模块的使用
  10. python perl 正则_为什么说perl的正则表达式功能比Python强大
  11. Android接口测试工具Apizza,自定义API请求返回值,自定义请求相对路径
  12. JavaScript实现解析xml文件数据
  13. 数据清洗有哪些方法?
  14. latex----目录格式设置
  15. 对视图有时为什么使用select top 100 percent 而不使用 select 呢
  16. 37手游基于云平台的大数据建设实践
  17. C#免装oracle客户端查询AMERICAN_AMERICA.US7ASCII字符集 中文乱码解决办法
  18. Linux安装iso镜像中的软件
  19. Shell修改IP地址
  20. Sql server 日期函数和日期转换

热门文章

  1. 第十五届全国大学生智能车竞赛各分赛区赛道数量以及比赛系统数量
  2. 使用高精度旋转编码器BH60测量步进电机转动角度
  3. go interface类型转换_Go: Understand the Empty Interface
  4. ajax formdata提交上传,Ajax提交用FormData()上传文件
  5. 零基础python入门编程全栈量化ai 百度云_Python编程量化AI全栈零基础入门帖子详情 - 网易云课堂...
  6. ptp driver Linux doc
  7. shell 脚本 进行sqlite3初始化
  8. mysql 包含非数字_mysql 正则表达式查询含有非数字和字符的记录
  9. 平流式初沉池贮砂斗计算_水处理相关计算软件大全,提高工作效率必备
  10. 自定义边界_如何批量生成CAD填充的边界?