python程序调试中设置条件断点

嵌入式设计应用

132人已加入

描述

  刚接触编程的人,往往对调试代码没有很深的认识,觉得把功能做出来就完事了。一旦程序运行出现问题,便无从下手。而实际开发中,调试代码通常要花费比新编写代码更多的时间。

  因此,选择合理的调试方法和工具,对于开发来说意义重大。

在写Python代码的时候,我习惯的调试方法很简单,就是在程序里增加输出,以便了解程序的运行路径和变量的值。

以下面这段代码为例:

deftwice(n):

n*=2

returnn

a=input(“a:”)

b=input(“b:”)

ifa》3:

b+=4

ifb》5:

c=a+twice(b)

else:

c=twice(a)+b

else:

b-=2

ifb《1:

c=a-twice(b)

else:

c=twice(a)-b

printc

即使这样不长的一段代码,如果对于某些输入,最后输出的值和你的预期不一致,想要用肉眼从中看出到底哪里出了问题也并不是一目了然的事情。

于是我会添加一些辅助的代码:

deftwice(n):

n*=2

returnn

a=input(“a:”)

b=input(“b:”)

print“====a,b:”,a,b

ifa》3:

b+=4

print“====1b:”,b

ifb》5:

c=a+twice(b)

print“====1c:”,c

else:

c=twice(a)+b

print“====2c:”,c

else:

b-=2

print“====2b:”,b

ifb《1:

c=a-twice(b)

print“====3c:”,c

else:

c=twice(a)-b

print“====4c:”,c

printc

运行后的效果:

a:2

b:4

====a,b:24

====2b:2

====4c:2

2

通过添加类似的输出内容,就能比较清晰地了解程序的运行状态。

不过,直接通过输出来调试,有时候会需要一点经验判断,决定在哪里输出什么数据。尤其当程序复杂之后,需要参考的数值会很多,全部都输出会很繁琐。

一种更便捷更直观的方式就是使用断点调试。

断点(breakpoint)是指在代码中指定位置,当程序运行到此位置时变中断下来,并让开发者可查看此时各变量的值。因断点中断的程序并没有结束,可以选择继续执行。

实现断点调试需要IDE的支持。下面以PyCharm来演示一下,仍然是前面的代码:

断点

在某一行代码的左侧栏点击,就可以在这行增加断点。现在在3个if判断的地方都加上断点。

选择debug,程序开始运行。

断点

输入a、b两个值之后,程序就在第一个if处中断,并且在工具栏中显示出当前程序中的各种数值。

断点

选择“resumeprogram”,程序就会继续执行,直到遇到下一个断点。

断点

有了断点功能的帮助,调试的时候就方便许多,很容易观察程序运行时的状态。

在断点调试时,还有个经常一起使用的功能就是单步调试。

断点

在程序中断时,选择“StepOver”,会向下执行一行代码后继续中断。

当所处代码行中有函数时,“StepInto”会中断在函数内部,之后将在其中单步执行。对应的,“StepOut”将中断在执行完当前所在函数后的位置。

断点

这些操作在工具栏有快捷按钮,也可通过快捷键操作。

断点

“工欲善其事,必先利其器”。把上述调试工具熟悉之后,对你的开发效率将会有很大提升。

当然,比调试工具更重要的,还是调试的思路。遇到错误时,读懂报错信息,分析出错原因,并逐步定位问题所在,而不是盲目地修改代码、无意义地重复运行,才是解决问题的关键。

下面以mars为例简单介绍下如何用PyCharm对python进行断点调试。

导入代码

open整个mars项目,切换合适的python版本,mars需要python2.7版本。

断点

断点

打断点

断点

Debugit

断点

当代码中需要input时,切换到Console窗口输入

断点

断点

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分