【发布时间】:2011-04-04 14:07:34
【问题描述】:
我想调试 (Java) 程序的整个流程。我看到通过我的程序步进有几个选项。 step into和step over有什么区别?
【问题讨论】:
标签: debugging
我想调试 (Java) 程序的整个流程。我看到通过我的程序步进有几个选项。 step into和step over有什么区别?
【问题讨论】:
标签: debugging
在g() 中的f(x) 行中使用当前指令指针(将要执行的行,由-> 指示)考虑以下代码,已被@987654325 中的g(2) 行调用@:
public class testprog {
static void f (int x) {
System.out.println ("num is " + (x+0)); // <- STEP INTO
}
static void g (int x) {
-> f(x); //
f(1); // <----------------------------------- STEP OVER
}
public static void main (String args[]) {
g(2);
g(3); // <----------------------------------- STEP OUT OF
}
}
如果您要在此时进入,您将移至f() 中的println() 行,进入函数调用。
如果此时您要跨步,您将移至g() 中的f(1) 行,跨过函数调用。
调试器的另一个有用的特性是 step out of 或 step return。 在这种情况下,step return 基本上会运行你当前的函数,直到你返回上一级。换句话说,它将逐步遍历f(x) 和f(1),然后返回到调用函数以在main() 中的g(3) 结束。
【讨论】:
g(3) 结束;在main()" 你是否假设你已经到了你的 当前位置来自g(2),一旦你完成了你返回到下一行g(3)?
g(2) 或 g(3) 呼叫当前是否有效)所以我已经在第一段中清除了这一点。感谢您的提醒。
调试代码行时,常见的场景如下:
步入
一个方法即将被调用,你想调试到那个方法的代码,所以下一步就是进入那个方法,一步一步继续调试。
跳过
一个方法即将被调用,但您对调试这个特定的调用不感兴趣,因此您希望调试器将该方法作为一个完整的步骤完全执行。
步骤返回
您已逐步调试此方法,您只希望调试器运行整个方法,直到它作为一个完整步骤返回。
简历
您希望调试器恢复“正常”执行而不是逐步执行
行断点
您并不关心它是如何到达那里的,但是如果执行到了特定的代码行,您希望调试器暂时暂停那里的执行,以便您决定要做什么。
Eclipse 具有其他高级调试功能,但这些是基本原理。
【讨论】:
step into 将深入研究方法调用
step over 只会执行该行并转到下一个
【讨论】:
您无法通过使用 step over 来了解该方法的详细信息。 如果要跳过当前行,可以使用step over,然后只需按一次F6就可以移动到下一行。 如果您认为该方法有问题,请使用 F5 查看详细信息。
【讨论】:
Step Into 调用当前选定行上要执行的下一个表达式,并在被调用方法中的下一个可执行行处暂停执行。
Step Over 执行当前选定的行并在下一个可执行行暂停。
【讨论】: