首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java一步一步编译/执行/调试

java一步一步编译/执行/调试
EN

Stack Overflow用户
提问于 2019-07-04 13:24:47
回答 1查看 61关注 0票数 0

我有一小部分代码,我想知道调试器是怎么想的。

代码语言:javascript
复制
/**L05*/ public class Main {
/**L06*/ public static void sp(String a){
/**L07*/    System.out.println(a);
/**L08*/ }
/**L09*/
/**L10*/ public static void main(String[] args) {
/**L11*/    sp("start");
/**L12*/
/**L13*/    //object-1
/**L14*/    Player p1 = new Player();
/**L15*/    sp("p1");
/**L16*/
/**L17*/    //object-2
/**L18*/    Player
/**L19*/            p2
/**L20*/            =
/**L21*/            new
/**L22*/                    Player
/**L23*/                    (
/**L24*/                    )
/**L25*/            ;
/**L26*/    sp
/**L27*/            (
/**L28*/                    "p2"
/**L29*/            )
/**L30*/    ;
/**L31*/
/**L32*/    //object-3
/**L33*/    Player p3= new Player(){/**strange that this works*/};
/**L34*/    Player p4=
/**L35*/    new Player();
/**L36*/    Player p5;
/**L37*/  }
/**L38*/ } 

code1

我想知道从18行到30.的执行过程。

例如,当我调试代码(现在从第11行开始)时,它会一步一步地执行,因此:

Line11在那里执行该方法,然后它将转到

Line13,因为它是一个评论。它不执行它,然后转到

第14行,在那里,它使玩家的对象->保留了多少玩家需要的空间。将默认的-构造函数给予和引用(指针命名为p1)调用Player的类型,并将Playerobject放入播放器。内弗林,现在它转到

第15行它执行。现在它到了

第17行是一个注释,然后转到

18号线 "?“现在我糊涂了。当我调试代码->时,它会出现在第17行到第19行之后,而不是第18行或第21行,或者我很长时间以来认为编译器是如何从分号开始的,从右到左。

Line19之后,它跳过其他行并转到

第26行 ->在哪里,行18,22-25,什么时候执行这一行。当我忘记Line25上的分号时,调试器将如何/何时识别?

我用断点一步一步地调试了我的代码。输出很好。对于此问题,代码Player.java文件并不重要。如果有什么东西丢失或不能理解,请告诉我,我可以添加或更改它。

EN

回答 1

Stack Overflow用户

发布于 2019-07-04 14:00:17

调试器本身看不到这些行,因为这些行上没有什么有趣的事情发生。

第18行是类型声明,第19行的p2很有趣,因为p2的引用值在=之后被分配和赋值。

然后跳到下一个执行,即第26行。

您可以将其扩展到多行,但调试器运行的是编译后的代码,其中包含某些“钩子”,指向原始源代码中的位置。

通常,您只需在一行中对其进行编码,调试器就是这样设置的。如果您希望看到更多详细信息,请使用step into选项而不是step over。

基本上,调试器会显示代码中的点,在代码中,事情发生了变化,状态得到了更新。当调试器在这些行上暂停时,您可以检查变量的值和对象的状态等等.它不会在您介绍的代码中看到任何其他东西或工件,只有在创建新事物、赋值或更改时才会看到。只有有趣的东西,在发生的时候,您可以分析传递给方法的值、从方法返回的值、新的实例化类状态等等.看看一切是否都像雨一样正常。

问问你自己,what value would I gain if the debugger paused on line 24?绝对什么都没有。有趣的部分发生在分配p2之前和p2分配之后,或者发生在Player()的构造函数中,您可以选择进入该构造函数,或者当抛出Exception时。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56888979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档