pycharm中的调试功能使用及说明

 更新时间:2025年05月22日 09:51:14   作者:不辉放弃  
这篇文章主要介绍了pycharm中的调试功能使用及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

一、调试前的准备工作​​

1. 准备一段测试代码

先写一个简单的Python脚本(比如计算阶乘),故意留点问题:

def factorial(n):
    result = 1
    for i in range(n):
        result *= i
    return result

print(factorial(5))  # 预期输出120,但实际输出0?

2. 为什么需要调试?

  • 当代码运行结果不符合预期时,调试能帮你逐行跟踪代码执行过程。
  • 可以查看变量值的变化,找出逻辑错误。

​​二、调试核心操作(带截图步骤)​​

​​1. 设置断点(Breakpoint)​​

  • ​作用​​:让程序运行到此处时暂停,方便观察。
  • ​操作​​:在代码行号左侧单击,出现红点。
  • (示例:在第3行result = 1和第5行result *= i设置断点)

​​2. 启动调试模式​​

  • ​方法1​​:点击右上角的绿色甲虫图标 🐞。
  • ​方法2​​:右键代码 → 选择 Debug '文件名'

​​3. 调试界面布局​​

启动调试后,PyCharm 会自动进入调试视图,主要分为:

  • ​① 调试工具栏​​:控制代码执行(步进、恢复等)。
  • ​② 变量窗口(Variables)​​:显示当前作用域内的变量值。
  • ​③ 控制台(Console)​​:显示程序输出和输入。

​​三、关键调试按钮详解​​

按钮图标名称快捷键作用说明
▶️ResumeF9继续执行程序,直到下一个断点或结束。
➡️Step OverF8执行当前行代码,​​不进入​​函数或循环内部。
⬇️Step IntoF7执行当前行代码,​​进入​​函数内部(比如调试自定义函数时用)。
⬆️Step OutShift+F8从当前函数内部跳出,回到调用它的位置。
🛑StopCtrl+F2终止调试进程。

​​四、实际调试流程(以示例代码为例)​​

​​1. 第一次暂停(断点:第3行)​​

  • ​观察变量窗口​​:此时 n=5result=1(正确)。
  • ​点击 Step Over(F8)​​:执行 result = 1

​​2. 进入循环(断点:第5行)​​

​点击 Step Over(F8)多次​​,观察每次循环时 iresult 的变化:

  • ​问题暴露​​:第一次循环时 i=0,导致 result *= 0,结果变为0!
  • ​错误原因​​:range(n) 生成的是 [0,1,2,3,4],应从 1 开始循环。

​​3. 修复代码​​

修改循环范围:for i in range(1, n+1):

五、调试进阶技巧​​

1. ​​条件断点(Conditional Breakpoint)​​

  • ​作用​​:当满足特定条件时暂停。
  • ​设置​​:右键断点 → 输入条件(如 i == 3)。

2. ​​监视表达式(Watches)​​

  • ​作用​​:实时监控某个变量或表达式的值。
  • ​操作​​:在 Watches 窗口点击 + → 输入表达式(如 i * 2)。

3. ​​重新运行调试​​

  • 修改代码后无需关闭调试,直接点击调试按钮重新启动。

​​六、常见问题排查​​

1. ​​调试时程序没有暂停?​​

  • 检查是否设置了断点。
  • 确保代码确实执行到了断点位置。

2. ​​变量窗口没有显示值?​​

  • 确认程序已暂停在断点处。
  • 检查变量是否在当前作用域内(比如循环内部变量需在循环中查看)。

3. ​​如何调试报错行?​​

  • 当程序抛出异常时,PyCharm 会自动跳转到错误行,并显示堆栈信息。

总结:调试的核心思路​​

  • ​定位问题区域​​:通过错误提示或日志缩小范围。
  • ​设置断点​​:在可疑代码前后暂停。
  • ​逐行跟踪​​:观察变量是否符合预期。
  • ​验证修复​​:修改后重复调试直到正确。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python输出由1,2,3,4组成的互不相同且无重复的三位数

    Python输出由1,2,3,4组成的互不相同且无重复的三位数

    这篇文章主要介绍了Python输出由1,2,3,4组成的互不相同且无重复的三位数,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • python更新列表的方法

    python更新列表的方法

    这篇文章主要介绍了python更新列表的方法,实例分析了Python列表赋值的相关技巧,需要的朋友可以参考下
    2015-07-07
  • python3安装pip3(install pip3 for python 3.x)

    python3安装pip3(install pip3 for python 3.x)

    这篇文章主要为大家详细介绍了install pip3 for python 3.x,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • Python标准库之Sys模块使用详解

    Python标准库之Sys模块使用详解

    这篇文章主要介绍了Python标准库之Sys模块使用详解,本文讲解了使用sys模块获得脚本的参数、处理模块、使用sys模块操作模块搜索路径、使用sys模块查找内建模块、使用sys模块查找已导入的模块等使用案例,需要的朋友可以参考下
    2015-05-05
  • Python 查找list中的某个元素的所有的下标方法

    Python 查找list中的某个元素的所有的下标方法

    今天小编就为大家分享一篇Python 查找list中的某个元素的所有的下标方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • 解决python给列表里添加字典时被最后一个覆盖的问题

    解决python给列表里添加字典时被最后一个覆盖的问题

    今天小编就为大家分享一篇解决python给列表里添加字典时被最后一个覆盖的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • Python中如何避免默认参数的陷阱

    Python中如何避免默认参数的陷阱

    在 Python 中,我们经常会使用函数的默认参数来简化代码,但你知道吗默认参数的行为有时可能会导致一些难以察觉的错误,下面小编就为大家介绍一下如何避免这样的错误吧
    2025-01-01
  • PyJWT实现Token验证

    PyJWT实现Token验证

    Python 的 PyJWT 是一个流行的库,用于处理 JWT,本文主要介绍了PyJWT实现Token验证,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-04-04
  • python如何使用腾讯云发送短信

    python如何使用腾讯云发送短信

    这篇文章主要介绍了python如何使用腾讯云发送短信,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-09-09
  • Python调用REST API接口的几种方式汇总

    Python调用REST API接口的几种方式汇总

    这篇文章主要介绍了Python调用REST API接口的几种方式汇总,帮助大家更好的利用python进行自动化运维,感兴趣的朋友可以了解下
    2020-10-10

最新评论