pycharm debug的操作
Pycharm debug操作
看似大家都会debug,但是其实很多debug技巧都不知道,
1,debug按钮
pycharm的debug按钮是右上角的一个小虫子,
2,打断点
debug,要先打断点,debug运行会运行到这一行结束,并且会显示结果,
3,debug相关功能怎么用
从左往后一个一个说说
F9:resume program
重启程序 如果你有多个断点,实际是直接到了下个断点,这个很常用,
F8:step over 单步
遇到断点后,程序停止运行,按F8单步运行。
一行一行地往下走,如果这一行上有方法, 不会进入方法。这个也很常用
F7:step into 进入
强制步入,能进入任何方法,查看底层源码的时候可以用这个进入官方类库的方法。
配合F8使用。单步调试F8时,如果某行调用其他模块的函数,在此行F7,可以进入函数内部,如果是F8则不会进入函数内容,直接单步到下一行。
Alt+shift+F7:step into mycode,
为单步进入,如果当前行有自定义的方法,会进入方法内部,但不会进入官方类库的方法
和step into的区别就是step into会进入官方库和第三方库的方法里面去,
step into mycode只会进入自己写的code里面去
shift+F8:跳出,
只对函数内有效,跳出函数后会回到函数所在行,不是函数地方跳出会执行到结束
alt+F9:run to cursor
一直执行,直到光标处停止;实际这个也是非常有用的,
用在循环内部时,点击一次就执行一个循环
4,调试技巧
1).断点条件调试
条件断点是debug中常用的一个技巧,针对像for循环、递归等同一行代码在同一次触发中会反复进入的情况,如果没有条件断点,循环多少次就要在这个地方停多少次,十分麻烦,
在 IDE 中有个条件断点,只需设置好变量条件,只有当某个变量等于你设置的条件的值时,断点就会自动停下。首先右击第 24 行的断点,给 Conditon 设置变量条件 index == 10,并点击 Done 保存设置。
当 index 的值为 10 时,DeBug 就会自动停下,这样我们就可以直接运行到出问题的那个循环。
2).计算表达式
当我们 Debug 某个方法时,有时候会忘了传入某个参数或者传错了,这个时候又不想重新Debug,就可以通过计算表达式来设置某个变量的值,选择 Set Value,临时修改值
下面的代码程序会根据重新赋的值向下运行,
3).多线程调试
有时候发现对多线程并发代码无法调试, 并不会所有断点都走到,
- 原因:出现上面的情况是因为 IDE 在 Debug 时默认阻塞级别是 Thread,
- 解决办法:是将它的阻塞级别改为 All, 阻塞其它线程,只有在当前调试线程走完时才会走其它线程。
- 配置方法:是右击断点,Suspend 的值改为 All ,再点击 Make Default, 最好点击 Done 保存设置。
4).单次断点
有些情况下,我们希望这个断点只生效1次就可以了,那我们就可以设置一下单次断点。 设置的方法是先打开“Breakpoints”(左边侧栏2个红点的图标),找到你的断点,然后勾选上“Remove once hit”就好。
5).PyCharm调试如何跳出循环?
debug模式下,一步一步来,当遇到for循环就很苦恼, 那么如何在遇到for循环后不再一步一步执行, 可以在for循环结束后的下一句打上断点,按快捷键F9即可。
6).pycharm调试:进入调用函数后返回 调试函数回溯
在macbook下,使用pycharm时,按住command,然后触摸板点击对应的方法,即可查看当前方法调用的函数。
要想返回到调用原始函数处,使用command+option+←
windows下,按住Ctrl,然后鼠标点击对应的方法,即可查看当前方法调用的函数。
要想返回到调用原始函数处, 使用Ctrl+alt+←
这个也是很有用的
7).Python和c++混合编程调试
这种比较麻烦,但是是可以的,
有相关的资料:
https://stackoverflow.com/questions/34299082/not-working-python-breakpoints-in-c-thread-in-pycharm-or-eclipsepydev
https://github.com/vnpy/vnpy/issues/149
我是直接使用的print调试的,
######################################