Administrator
Published on 2025-03-07 / 7 Visits
4
0

PyCharm Debug

在 PyCharm 调试时,调试工具列中提供了几个功能,包括步过 (Step Over)、步入 (Step Into)、单步执行 (Single Step) 和步出 (Step Out),它们分别有以下含义:

1. 步过 (Step Over)

  • 含义:当代码当前行是函数调用时,不会进入该函数内部执行,而是一步一步执行代码,直到该函数调用结束。
  • 适用场景:当你需要快速调试代码,绕过某个函数的内部实现细节时,可以选择步过。例如,如果你知道某个函数的实现是正确的,或者你只需要关注函数的输入和输出,那么可以使用步过功能。
  • 可视化示例:假设以下代码:
    def main():
        a = add(2, 3)
        print(a)
    
    def add(x, y):
        return x + y
    
    如果调试器当前暂停在 a = add(2, 3) 这一行,此时选择步过,调试器会直接执行 add(2, 3) 的函数调用,并继续暂停在 print(a) 这一行。

2. 步入 (Step Into)

  • 含义:当代码当前行是函数调用时,会进入该函数内部,逐行执行代码,直到函数返回。
  • 适用场景:如果你需要深入调试函数的内部实现,查看函数内部变量的变化和执行流程时,可以选择步入。例如,你需要检查 add 函数的实现逻辑是否正确,变量 xy 的值是否被正确传递。
  • 可视化示例:在上述代码中,当前暂停在 a = add(2, 3) 时,选择步入,调试器会跳转到 add 函数的第一行 return x + y,并暂停在该行,这样你可以查看 xy 的值,并继续调试。

3. 单步执行 (Single Step)

  • 含义:单步执行时,逐行执行代码,包括进入函数内部。这与步入(Step Into)非常相似,但单步执行允许你在函数调用时选择是否进入函数内部。
  • 适用场景:当你需要非常详细地调试代码,逐行执行每一条语句时,可以使用单步执行。
  • 与步入的区别:单步执行的行为与步入略有不同。在一些情况下,如果当前行的代码是某种复杂的语句(比如一个包含多个函数调用的表达式),单步执行可能会更灵活地决定进入哪个函数。

4. 步出 (Step Out)

  • 含义:当代码当前驻留在一个函数内部时,步出会执行到当前函数的末尾,并返回到其调用函数。
  • 适用场景:如果你进入了某个函数的内部进行调试,但已经看到了需要的部分,想要迅速返回到调用该函数的地方继续调试,可以使用步出。例如,在调试 add 函数时,你发现问题已经解决,可以使用步出快速返回到 main 函数。
  • 可视化示例:在上述代码中,调试器当前暂停在 add 函数的 return x + y 这一行,此时选择步出,调试器会执行完 add 函数,并返回到 main 函数中的 a = add(2, 3) 的下一行 print(a)

总结

  • 步过:跳过函数调用,不进入函数内部。
  • 步入:进入函数内部,逐行执行。
  • 单步执行:逐行执行代码,包括进入函数内部。
  • 步出:从当前函数退出,返回到调用函数。

Comment