📜  step over vs step into vs step out (1)

📅  最后修改于: 2023-12-03 15:20:21.121000             🧑  作者: Mango

Step over vs Step into vs Step out

在编写和调试代码时,程序员需要用到不同种类的调试技巧。其中,"Step over"、"Step into" 和 "Step out" 是调试中最常用的术语之一。 本文将介绍这三个术语的含义和使用场景。

Step over

"Step over" 是指跳过当前代码行并进入到下一行。可以将其视为向前单步执行。当你执行“Step over”命令时,不会进入任何函数或方法,而只是执行下一行代码。

在以下代码片段中,我们来看一下如何使用 "Step over" 命令。

def add(x, y):
    return x + y

def main():
    sum = add(2, 3)
    print(sum)

if __name__ == "__main__":
    main()

假设我们想要调试 "main" 函数。 当我们执行 "Step over" 命令时,程序将跳过 "add" 函数并进入到下一行 "print(sum)" 。

Step into

"Step into" 是指进入到函数或方法。当你执行"Step into"命令时,程序将进入当前行中调用的方法或函数中。这对于检查子函数、调试库代码和单步跟踪代码在哪里出现错误非常有用。

假设下面的代码是我们要调试的代码:

def add(x, y):
    return x + y

def main():
    sum = add(2, 3)
    print(sum)

if __name__ == "__main__":
    main()

如果我们想要调试 "add" 函数,那么我们需要执行 "Step into" 命令。 当我们执行 "Step into" 命令时,程序将停在第一行 "return x + y",让我们检查是否正确执行。

Step out

"Step out" 是指退出函数或方法并返回到当前函数被调用的一行。 当你执行 "Step out" 命令时,程序会继续执行直到当前函数或方法完成,然后回到函数被调用的行。 这对于从嵌套函数或方法中退出非常有用。

下面的代码将演示如何使用 "Step out" 命令:

def inner_func():
    return 5

def outer_func():
    a = 2
    b = 3
    c = a + b
    result = inner_func() # We want to debug this line
    print(result)

if __name__ == "__main__":
    outer_func()

如果我们想要调试 "inner_func" 函数,则需要执行 "Step into" 命令。当我们已经检查了 "inner_func" 内部并想要回到 "outer_func" 调用的位置时,我们可以执行 "Step out" 命令。

总结
  • "Step over" :跳过当前行并进入下一行。
  • "Step into" :进入函数或方法,一行一行地跟踪代码。
  • "Step out" :退出函数或方法并返回到调用的行。

这些命令非常有用,可以帮助程序员快速准确定位代码错误。