首页 > 编程知识 正文

javaweb程序怎么断点调试,Java程序调试出现的问题

时间:2023-05-03 08:18:12 阅读:111633 作者:2920

调试是检查APP应用程序中是否存在错误的过程。 要进行调试,请在代码中设置断点和监视,然后在调试器中运行代码。 您还可以通过逐行运行代码并检查APP应用程序的状态来发现问题。

IDE使用Sun Microsystems JPDA调试器调试程序。 启动调试会话时,屏幕底部会自动显示所有相关的调试器窗口。 可以调试整个项目、可执行类和JUnit测试。 在IDE中,还可以将调试器连接到APP应用程序进程,以便调试在远程计算机上运行的APP应用程序。

或Web调试

在APP应用程序、JSP页或servlet中,可以使用HTTP监视器来监视数据流。 缺省情况下,将显示HTTP监视器,它与收集有关

servlet引擎处理的HTTP请求的数据。 关于引擎处理的每个HTTP

请求、监视器记录有关传入请求的数据、服务器上维护的数据状态和servlet

上下文。 您可以查看数据、保存将来会话的数据、刷新和编辑以前的请求。 关于HTTP

有关监视器的详细信息,请从主菜单中选择“帮助”“帮助内容”。

对于自由格式项目,必须为“调试项目”命令创建Ant目标。 也可以编写用于调试特定文件的目标并将这些目标映射到项目的命令。

在本节中,您将了解以下内容:

基本调试

本节通过一个简单的示例介绍如何启动调试会话、如何手动单步执行代码以及如何监视变量和方法调用。 后面的部分将介绍更高级的功能,如断点设置和监视。

本节中的示例是阵列文件APP应用程序。 这个APP应用非常简单。 将创建sampleBeans数组,每个Bean都包含两个属性: firstName和lastName。 然后,将为每个Bean的属性赋值并输出。

在“项目”窗口中,在“源包”下展开arrayfill包。 阵列文件包包含两个类:阵列文件和示例bean。 右键单击ArrayFill.java,然后按Shift-F6组合键执行该操作。 在“输出”窗口中显示的输出类似于以下内容:

java.lang.NullPointerException

atarrayfill.array fill.load names (array fill.Java :27 ) ) ) ) ) ) ) ) ) )。

atarrayfill.array fill.main (array fill.Java :34 ) ) ) ) ) )。

Exception in thread 'main '

Java Result: 1

启动调试会话

在IDE中启动调试会话时,将编译调试的文件,在调试模式下运行,并且调试器输出将显示在调试器窗口中。 要启动调试会话,请选择要调试的文件,然后从“运行”菜单中选择以下命令之一:

调试主项目(F5 )。 运行主项目,直到到达第一个断点。

步入(F7 )。 开始执行主项目的主类,并在第一个可执行语句中停止。

执行到光标(F4 )。 启动调试会话,APP到源代码编辑器中的光标位置,然后暂停APP会话。

如果在IDE中

中打开了多个项目。 请确保在“项目”窗口中右键单击Array Fill,然后将Array Fill设置为主项目

选择节点,然后从上下文菜单中选择“设置主项目”。 按F7键进入主项目的主类。 如果未设置项目的主类,则会显示一条消息,提示您进行设置。 然后,IDE

将在源代码编辑器中打开该文件,显示“输出”窗口和调试器窗口,并在main方法中停止。

调试器窗口

让我们简单看看调试器窗口。 调试器窗口在每次启动调试会话时自动打开,在会话完成时自动关闭。 缺省情况下,将会打开三个调试器窗口:“局部变量”窗口、“监视”窗口和“调用栈”窗口。

“局部变量”窗口位于前端调试器窗口中

从“窗户”

可以通过从“口”“调试”菜单中选择,打开其他调试器窗口。 如果在调试会话期间打开调试器窗口,则该窗口将在会话完成时自动关闭。 如果没有启动

如果在会话中打开调试器窗口,则窗口将保持打开状态,直到手动关闭。 可以将调试器窗口拖动到所需的位置。

下表显示了调试器窗口。

名字

快捷键

说明

局部变量

Alt-Shift-1

列出了当前调用的局部变量。

监视

Alt-Shift-2

列出了调试APP应用程序时要监视的所有变量和表达式。

调用堆栈

Alt-Shift-3

显示了在当前线程执行期间执行的调用序列。

等级

Alt-Shift-4

显示了由当前正在调试的进程读取的所有类的层次结构。

断点

Alt-Shift-5

p>列出了当前项目中的断点。

会话

Alt-Shift-6

列出了当前在 IDE 中运行的调试会话。

线程

Alt-Shift-7

列出了当前会话中的线程组。

Alt-Shift-8

列出了项目类路径上的源目录。通过在此处取消选择类的源文件夹,可以设置是步入还是越过这些类。IDE 将自动越过 JDK 类;如果要步入这些类,请在此窗口中选择 JDK 源。

逐步执行代码

可以使用“运行”菜单中的以下命令来控制代码在调试器中的执行方式:

越过 (F8)。执行一行源代码。如果源代码行包含调用,则执行整个例程而不逐步执行单个指令。

步入 (F7)。执行一行源代码。如果源代码行包含调用,则会刚好在执行例程的第一条语句之前停止。

步出 (Alt-Shift-F7)。执行一行源代码。如果源代码行是某个例程的一部分,则会执行该例程的其余各行,然后将控制权返回给例程的调用者。

暂停。暂停执行应用程序。

继续 (Ctrl-F5)。继续执行应用程序。应用程序将在下一个断点处停止。

运行至光标 (F4)。将当前会话运行到源代码编辑器中的光标位置,并暂停应用程序。

在本示例中,使用 F7 键按一次一行的方式逐步执行代码。loadNames 调用中出现 NullPointerException,因此在步入该调用时,将在“局部变量”视图中监视 names 数组的值。每个 Bean 都包含一个 null 值。可以继续逐步执行 loadNames 方法 - names Bean 始终为 null。

在调试器中步入代码

此处的问题是,当代码行

SampleBean[] myNames=new SampleBean[fnames.length];

启动包含这些 Bean 的数组时,它不会实例化 Bean 自身。必须添加以下代码,在 loadNames 方法中实例化各个 Bean:

names=new SampleBean();

使其位于 loadNames 方法中的行 names.setLastName(lnames); 之前。

使用断点

大多数应用程序都太大,从而无法逐行进行检查。通常,在您认为会出现问题的位置设置一个断点,然后将应用程序运行到该位置。您还可以设置更为专用的断点(如仅当指定条件为 true 时停止执行的条件断点)或适用于某些线程或方法的断点。

在此节中,我们将使用上一个示例中的 ArrayFill 类,因此必须将上面添加的代码注释掉以便重现错误。

设置断点

如果仅希望设置简单的行断点,则可以单击所需行的左旁注处。在旁注中将会出现行断点图标 (

)。再次单击此行断点可以将其删除。

在源代码编辑器中设置断点

对于更复杂的断点,请使用“运行”菜单中的“新建断点”(Ctrl-Shift-F8) 命令。“新建断点”对话框将使您能够选择要创建的断点类型并设置断点选项,如中断条件或断点输出到“输出”窗口的信息。

设置断点条件

仅当指定的布尔表达式为 true 时,条件断点才停止执行。如果要设置条件断点,请打开“新建断点”对话框,然后在“条件”字段中输入表达式。

例如,打开

ArrayFill.java,在 main 方法的 loadNames 方法调用中设置插入点,然后按 Ctrl-Shift-F8

组合键。在该对话框的“条件”字段中输入 names!=null 并单击“确定”。然后按 F5 键开始调试项目。此时会在 loadNames

方法内中断程序的执行。

定制断点输出

在“新建断点”对话框中,您还可以指定到达断点时打印的信息。请在对话框底部的“打印文本”字段中输入任何消息。您可以使用变量引用要显示的某些类型的信息。

断点类型

下表列出了可用的不同断点类型。

类型

描述

可以在到达行时或在行中的元素满足某些条件时中断执行。

方法

如果在方法名称上设置了断点,则在每次执行该方法时都会停止执行应用程序。

异常

具有多个用于设置异常断点的选项。在捕获到特定异常、源代码中未处理特定异常或遇到任何异常(无论应用程序是否处理错误)时都可以中断执行应用程序。

变量

可以在访问(例如,将变量作为参数来调用方法)或修改特定类和字段中的变量时停止应用程序的执行。

线程

可以在启动和/或停止线程时中断执行应用程序。

如果设置了类断点,则可以在将类装入虚拟机和/或从虚拟机中卸载类时停止调试器。

设置监视

通过使用监视,可以在应用程序执行期间跟踪变量或表达式值的变化。要设置监视,请在源代码编辑器中选择要设置监视的变量或表达式,然后单击鼠标右键并选择“新建监视”(Ctrl-Shift-F7)。

您还可以在“监视”视图中创建固定监视。常规监视描述的是变量的内容,而固定监视描述的则是当前为变量指定的对象。要创建固定监视,请右键单击“局部变量”或“监视”视图中的任意项,然后选择“创建固定监视”。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。