简介
今天在用pycharm调试程序感觉各种不爽啊。用myeclipse习惯了,以为所有的调试都一样方便,见识了pycharm(还特意查了下,pycharm是python中较好的IDE了,不大理解诶)才理解myeclipse的强大。
本以为调试都大同小异,结果有几个地方和想当然的不一致,还是整理下备查吧。
先说说坑吧
1,图2,左侧的那个按钮,在debug执行过程中时变灰。这个没问题。问题是pycharm在run时程序非常快,debug时可能非常慢。在debug一段dataframe代码时,等2-3分钟没反应,按钮都是灰的,点不了,还以为电脑死机了。简化后发现是执行速度过慢导致的。目前还不清楚为何有这么大差别。
2,菜单分位2部分,图2所示,一般情况下执行下一个断点(F9)和其他那几个都是在一起的,pycharm是分开的。
3,点击debug后,程序完全没反应,留意下Mute Breakpoints为非选中状态才行,重启pycharm,或尝试新建新python文件,然后在调试。
启动调试
界面右上角
图1
debug相关功能
界面左下角,使用到的在下图已经圈出
图2
样例程序
01 def helloworld():
02 print 'hello world'
03 a=1
04 b=2
05 c=3
06 for i in range(1,3):
07 print 'i',i
08 a=1
09 b=2
10 c=3
11 helloworld()
12 a=1
13 b=2
14 c=3
程序完整序列:3,4,5,6,7,6,7,8,9,10,11,2,12,13
F8:step over 单步,3,4,5,6,7,6,7,8,9,10,11,12,13
F7:step into 进入,3,4,5,6,7,6,7,8,9,10,11,2,11,12,13
F9:resume program 重启程序 实际是 下个断点
特殊的:11行断点且2断点,则11停2停,2执行后不再回到11,和F7有区别
Alt+shift+F7:step into mycode,这个没看明白什么意思,自己调试时debug停在第一个断点,然后按这个,就会依次执行各代码,无论有无断点,更像F8(F7如果没遇到函数也和F8一样的,可以理解为单步),按照字面意思应该是“只进入自己的函数”,和F7类似的,不过它怎么判断是否是自己函数呢?同文件?同author,额不深究了,反正不打算用。
shift+F8:跳出,只对函数内有效,跳出函数后会回到函数所在行,(类似11,2,11),不是函数地方跳出会执行到结束
alt+F9:run to cursor 不打算用
可能常用就是F8,F9,F7,shift+F8
较特殊的:
F7进入,shift+F8跳出,不是一对。
F9的英文和实际含义感觉也不大一致。
友情链接:
Python 代码调试技巧:https://www.ibm.com/developerworks/cn/linux/l-cn-pythondebugger/
Python 基础——一张图告诉你PyCharm如何进行断点调试:
Python 程序如何高效地调试?:https://www.zhihu.com/question/21572891
Pycharm使用debug对Python断点测试心得:https://www.noniu.com/jiaocheng/219.html