codecamp

调试您的第一个Java应用程序

调试您的第一个Java应用程序

开始之前

您已经创建并执行了第一个Java应用程序。现在是时候调试它了。

但是,在应用程序中再添加一行是很好的,如下所示:

System.out.println("it's me, Wombat!");

放置断点

要启动调试器会话,首先需要在要暂停应用程序执行的语句中放置断点。现有的源代码并没有为您提供多少选择 - 唯一可以放置断点的地方是在下列语句中:

System.out.println("Hello World!"); System.out.println("it's me, Wombat!");

所以我们这样做吧。单击要放置断点的语句行左侧的装订线,或者只需按Ctrl+F8:

调试您的第一个Java应用程序

如您所见,新断点将添加到源代码中。设置断点的行将其颜色更改为粉红色。

如果只是将鼠标指针悬停在断点上,您将在工具提示中看到它的属性:

调试您的第一个Java应用程序

假设您要更改此断点的某些属性。然后右键单击它并看到以下对话框:

HWDebug断点属性

最后,您希望浏览并更改断点的所有可用属性,并查看其在其他断点(如果有)中的位置。在这种情况下,请按Ctrl+Shift+F8:

HWDebug断点属性已满

启动调试器会话

现在添加了断点,您可以调试应用程序。这可以通过多种方式完成;但是,让我们按照最简单的方式。

注意使用该main()方法标记类的图标 。单击此图标会显示一个菜单,可以运行和调试这样的类:

HWDebug开始会话

这是什么意思?

IntelliJ IDEA使用临时运行/调试配置启动了调试器会话 。此运行/调试配置具有默认名称“HelloWorld.main()”。要查看和更改此运行/调试配置的设置,请在主菜单上选择:运行|编辑配置... (Run | Edit Configurations... ):

ij runConfigMenu

或单击运行/调试配置选择器,然后选择:编辑配置...(Edit Configurations...):

HWDebug runco​​nfig

IntelliJ IDEA编译您的应用程序(这需要时间!),然后在第一个断点处挂起应用程序。

IntelliJ IDEA窗口现在看起来不同了:

  • 第一个改变的是带断点的第一行的颜色。现在该行呈现蓝色:
    HWDebug断点命中
    这意味着(根据断点属性)应用程序已到达此断点,在println语句之前命中它并暂停。
  • 接下来,在IntelliJ IDEA窗口的下半部分,出现了一个特殊的工具窗口。这是调试(Debug)工具窗口,其中包含分步(stepping)工具栏,并显示调试器会话期间可能需要的所有必要信息:
    HWDebug工具窗口 

逐步执行应用程序

直接逐步完成语句

让我们逐步完成应用程序。单击分步(stepping)工具栏上的 ,或者按:F8。

下一行现在变成蓝色。如果查看“调试(Debug)”工具窗口,您会注意到以下更改:

  • 在“框架(Frames)”窗格中,将显示下一个行号。
  • “控制台(Console)”选项卡标有图标 ,表示它包含新输出。

HWDebug breakpoint2命中

单击控制台(Console)选项卡。您会看到第一行的消息,其中包含断点“Hello,World!”。第二条消息尚未显示:

HWDebug控制台

再次单击步进工具栏上的 图标,或按:F8。现在第二条消息出现在控制台中。下次单击 后,应用程序停止:

HWDebug console2

此调试会话结束。

逐句调用方法调用

现在让我们探索一种更复杂的方式,并进入println()调用。

首先,重新启动调试器会话。为此,只需单击“调试(Debug)”工具窗口的工具栏上的 即可 。因此,您将重新运行最新的运行/调试配置,即:HelloWorld。

应用程序再次在第一个断点处暂停。这一次,单击 或按Shift+Alt+F7。你看到了不同的画面:

HWDebug步入班级

这意味着IntelliJ IDEA已经进入了PrintStream.java库类的println(String x)方法。请注意,线程列表中会出现一个新线程。

单击 或按Shift+F8,以返回下一个断点:

HWDebug breakpoint3命中

请注意,控制台选项卡再次获得标记 ,这意味着新输出可用。接下来,单击 。您看到该进程终止:

HWDebug应用程序停止

运行打包的JAR应用程序
迁移到Java 8
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

IntelliJ IDEA的一般准则

什么是IntelliJ IDEA项目

使用IntelliJ IDEA的意图行为

IntelliJ IDEA使用运行/调试配置

特定于VCS的程序

IntelliJ IDEA语言和特定框架指南

IntelliJ IDEA的数据库和SQL功能

IntelliJ IDEA使用之JavaServer Faces(JSF)

IntelliJ IDEA:分析PHP应用程序的性能

IntelliJ IDEA:调试PHP应用程序

IntelliJ IDEA:适用于PHP的Google App Engine

IntelliJ IDEA更多内容

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }