zoukankan      html  css  js  c++  java
  • 第15.3节 PyCharm程序调试功能介绍

    一、 代码调试
    点击工具栏的调试按钮(如下图蓝色圈标记按钮)可以进行程序调试,可以在调试前先设置断点,断点设置就是在打开文件的行与前面的行号之间用鼠标单击进行设置和取消(如下图蓝色下划线上面的实体圆点)
    在这里插入图片描述
    设置后执行debug时到断点就会停下,如下图:
    在这里插入图片描述
    其中黄色荧光笔标记的为debug调试语句执行按钮,包括step over、step into等按钮,在run菜单中也有对应子菜单,相关功能也有对应快捷键,如F8、F7等。在右下角标记蓝色的框内能观察到对应变量的值。除了常规的step into和step over功能之外,PyCharm还提供了如下调试功能:

    1、 step into(单步跟踪进入,遇函数进入函数代码执行):快捷键为F7,执行下一行,如果遇到子函数会进入子函数执行,包括调用标准库模块的子函数都会进入;

    2、 step over(单步跟踪,遇函数当成一行代码执行,不会进入函数内执行):快捷键为F8,执行下一行,如果遇到子函数不会进入子函数执行,将子函数作为一行执行,但如果子函数中有断点会执行到断点处;

    3、 Step into my code(执行到应用代码),从当前系统模块函数代码中直接往下执行直到执行到应用本身的代码,快捷键为Alt+Shift+F7,当执行step into进入一个系统模块的代码中去以后,使用该功能可以回到自己的代码并继续向下行执行,这个功能老猿觉得应该某些时候非常有用;

    4、 Force Step into(强制单步执行但忽略调试过滤条件):快捷键也为Alt+Shift+F7,但菜单栏是灰色的,查阅相关资料说当调用了一个类库方法时候,强制进入会进入到该类库的方法里面,哪怕是class代码,这一般没必要,所以必须强制才能进去。另外从菜单的hint信息中,是说对于逐步调试过滤的库、构造函数等也强制进入,如果是这样应该有个地方可以设置调试过滤的地方,老猿暂时没有这个功能。因此这个功能老猿没弄明白是什么意思,因为老猿验证使用step into调用系统标准模块也会进入标准模块的构造函数执行,并且在老猿测试过程中,该按钮始终为不可用状态,不能点击;

    5、 step out(执行跳出当前函数):快捷键为Shift+F8,当单步执行到子函数内时,用step out就可以执行完子函数余下部分,并返回到上一层函数;

    6、 smart step into(智能单步跟踪):快捷键为:Shift+F7,这个在按钮中没有,在菜单中有,这个功能也是一个非常有用的功能,当一行代码中有多个函数,想进入其中一个函数其他函数不进入,使用该功能可以让调试人员选择进入的函数。如:
    在这里插入图片描述
    就可以选择需要调试进入的函数而其他两个函数不进入。
    注意:如果想选择上面3个函数中的2个执行必须在执行第一个函数返回时再选择这种模式执行。另外该方式执行到调试的函数内时,如果还需要继续选择调试下一个函数,需要在当前执行函数的return语句去选择该方式执行,在其他地方该方式执行等同于断点恢复执行执行功能。

    7、 Force Step over(强制单步跟踪):快捷键为Alt+Shift+F8,与step over类似,只是函数中的断点全部会disable不会发生作用,所以为Force;

    8、 run to cursor(执行到光标):快捷键为Alt+F9,执行到当前光标所在代码,中间如果有断点会在断点处停止;

    9、 Force run to cursor(强制执行到光标):快捷键为Ctrl+Alt+F9,执行到当前光标所在代码,中间如果有断点会全部忽略不停止;

    10、 Jump to Cursor(跳转到光标):忽略其他代码,直接从当前执行处跳转到当前光标代码行;

    11、 resume programe(断点恢复执行):快捷键F9,直接从当前处往下执行,直到遇到下一个断点。

    本节介绍了PyCharm的debug方法,可见PyCharm的调测功能还是比较强大的。

    老猿Python,跟老猿学Python!
    博客地址:https://blog.csdn.net/LaoYuanPython

    老猿Python博客文章目录:https://blog.csdn.net/LaoYuanPython/article/details/98245036
    请大家多多支持,点赞、评论和加关注!谢谢!

  • 相关阅读:
    shell 10流程控制
    shell 9test命令
    shell 8字符串与文件内容处理
    shell 7输入输出
    shell 6基本运算符
    JS-JQ实现TAB选项卡
    JS-JQ实现页面滚动时元素智能定位(顶部-其他部位)
    js获取框架(IFrame)的内容
    codeforces 660C C. Hard Process(二分)
    codeforces 660B B. Seating On Bus(模拟)
  • 原文地址:https://www.cnblogs.com/LaoYuanPython/p/12235185.html
Copyright © 2011-2022 走看看