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调试的,

######################################

posted @ 2020-02-22 14:02  技术改变命运Andy  阅读(479)  评论(0编辑  收藏  举报