【idea实用系列4】 debug常用和高级功能用法详解
文章目录
常用的Idea调试功能
Idea的调试功能可以帮助您在代码执行过程中逐行调试并监视变量的值。
功能介绍:
-
New Watch: 在调试期间添加一个新的观察点,用于监视特定变量或表达式的值。您可以在调试器窗口中单击右键并选择"New Watch"选项来创建新的观察点。
-
Inspect: 在调试期间查看变量的详细信息。您可以在调试器窗口中选中一个变量,并使用右键菜单中的"Inspect"选项来查看其详细信息。
-
Set Value: 在调试期间修改变量的值。您可以在调试器窗口中选中一个变量,并使用右键菜单中的"Set Value"选项来修改其值。
-
Copy Value: 将变量的值复制到剪贴板。您可以在调试器窗口中选中一个变量,并使用右键菜单中的"Copy Value"选项来将其值复制到剪贴板。
-
Evaluate Expression: 在调试期间计算并查看表达式的值。您可以在调试器窗口中使用"Evaluate Expression"选项输入要计算的表达式,并查看其结果。
-
Add to Watches: 在调试期间将变量或表达式添加到观察列表中。您可以在调试器窗口中选中一个变量,并使用右键菜单中的"Add to Watches"选项将其添加到观察列表中。
-
Show Referring Objects: 查看引用了特定对象的其他对象。您可以在调试器窗口中选中一个对象,并使用右键菜单中的"Show Referring Objects"选项查看引用了该对象的其他对象。
-
Jump To Source: 快速跳转到源代码。您可以在调试器窗口中选中一个变量或方法,并使用右键菜单中的"Jump To Source"选项快速跳转到其源代码。
这些是Idea调试功能的一些常见用法。根据您的具体需求,您可以根据上述介绍在调试器窗口中使用相应的功能。
New Watch
在Idea中,“New Watch”(新观察点)是一种方便的调试功能,它允许您在调试过程中添加一个新的观察点来监视特定变量或表达式的值。以下是在Idea中使用"New Watch"的步骤:
-
在调试模式下运行程序,并打开调试器窗口。
-
在调试器窗口中找到您希望监视的变量或表达式。
-
右键单击该变量或表达式,并选择上下文菜单中的"New Watch"(新观察点)选项。
-
Idea将弹出一个对话框,要求您输入观察点的名称和相关的变量或表达式。
-
在对话框中,输入您想要监视的变量或表达式,并为观察点指定一个名称。
-
点击"OK"按钮来创建观察点。
现在,Idea会在调试过程中监视该观察点所关联的变量或表达式,并在调试器窗口的"Watch"(观察点)选项卡中显示其值。您可以实时查看观察点的值,并随着代码执行的变化进行更新。
通过使用"New Watch"功能,您可以方便地设置自定义的观察点,以监视特定变量或表达式的值。这对于跟踪变量的变化、验证表达式的计算结果或观察代码的执行非常有用。
请注意,观察点只在当前调试会话中有效,一旦调试会话结束,观察点将被重置。如果您需要在多个调试会话之间保留观察点,可以将其保存为调试配置的一部分。
通过使用"New Watch"功能,您可以方便地监视特定变量或表达式的值,并随时了解其随着代码执行的变化情况。这对于深入了解代码的行为和调试复杂的逻辑非常有用。
Add to Watches
在Idea中,“Add to Watches”(添加到观察列表)是一种方便的调试功能,它允许您在调试过程中将变量或表达式添加到观察列表中以进行监视。以下是在Idea中使用"Add to Watches"的步骤:
-
在调试模式下运行程序,并打开调试器窗口。
-
在调试器窗口的"Variables"(变量)选项卡中,找到您希望添加到观察列表的变量。
-
右键单击该变量,并选择上下文菜单中的"Add to Watches"(添加到观察列表)选项。
-
Idea将自动将所选变量添加到观察列表中。
-
在观察列表中,您可以看到被添加的变量及其当前的值。Idea会在调试过程中持续更新观察列表中变量的值。
通过将变量添加到观察列表,您可以在调试过程中方便地监视特定变量的值,以了解其随着代码执行的变化情况。这对于跟踪变量的状态、调试特定代码段或验证逻辑非常有用。
请注意,观察列表只在当前调试会话中有效,一旦调试会话结束,观察列表将被重置。如果您需要在多个调试会话之间保留观察列表,可以将其保存为调试配置的一部分。
通过使用"Add to Watches"功能,您可以方便地跟踪和监视特定变量的值,以更好地理解代码的执行过程和状态。
Inspect
在Idea中,“Inspect”(查看)是一个方便的调试功能,它允许您在调试过程中查看变量的详细信息。以下是在Idea中使用"Inspect"的步骤:
-
在调试模式下运行程序,并打开调试器窗口。
-
在调试器窗口的"Variables"(变量)选项卡中,找到您想要查看详细信息的变量。
-
右键单击该变量,并选择上下文菜单中的"Inspect"(查看)选项。
-
Idea将弹出一个新的窗口,显示所选变量的详细信息,包括类型、值和可能的相关属性或方法。
通过使用"Inspect"功能,您可以在调试过程中更深入地了解变量的内部结构和内容。这对于检查对象的属性、调用方法或验证变量的状态非常有用。
请注意,"Inspect"功能提供了一个独立的窗口来显示变量的详细信息,因此您可以同时查看多个变量的详细信息。这样可以帮助您更好地分析和理解代码的执行过程。
通过使用"Inspect"功能,您可以方便地查看变量的详细信息,以更好地了解代码中的数据和对象。这对于调试复杂的逻辑或验证变量的状态非常有用。
高级用法
Idea调试功能提供了一些高级用法,可以帮助您更加灵活和高效地进行代码调试。下面是一些Idea调试功能的高级用法:
-
条件断点(Conditional Breakpoints):您可以为断点设置条件,只有当满足条件时才会触发断点。右键单击断点并选择"Edit Breakpoint",在弹出的对话框中设置条件。
-
日志断点(Logpoints):日志断点允许您在不停止程序执行的情况下,将自定义日志消息输出到控制台或日志文件中。右键单击断点并选择"Edit Breakpoint",在弹出的对话框中选择"Log Message"选项,并输入要输出的日志消息。
-
远程调试(Remote Debugging):您可以通过远程连接调试运行在远程服务器上的应用程序。首先,在远程服务器上启动应用程序并指定调试端口,然后在Idea中创建一个远程调试配置,指定远程服务器的主机名和调试端口。最后,点击调试按钮启动远程调试会话。
-
多线程调试:Idea提供了丰富的多线程调试功能,包括查看线程状态、暂停和恢复线程、设置线程断点等。您可以在调试器窗口的"Threads"选项卡中查看和控制线程的状态。
-
监视表达式(Watch Expressions):监视表达式允许您在调试过程中动态地监视变量或表达式的值。右键单击监视窗口并选择"Add Watch Expression",输入要监视的变量或表达式,并在调试过程中观察其值的变化。
-
调试过滤器(Debug Filters):调试过滤器允许您排除不需要进行调试的类、方法或包。您可以在Idea的设置中配置调试过滤器,以避免不必要的断点触发和代码跟踪。
-
运行到光标处(Run to Cursor):您可以将程序的执行从当前位置运行到光标所在的位置,而无需设置断点。使用快捷键Ctrl+Shift+F9或通过右键单击编辑器中的代码并选择"Run to Cursor"来运行到光标处。
条件断点
条件断点是Idea调试功能的一个重要特性,它允许您为断点设置条件,只有当满足条件时才会触发断点。以下是在Idea中设置条件断点的步骤:
-
在代码编辑器中找到您希望设置条件断点的行,并在该行左侧单击以创建一个断点。
-
右键单击断点,并选择"Edit Breakpoint"(编辑断点)选项。
-
在弹出的对话框中,您可以看到断点的详细信息和设置选项。
-
在对话框中,找到"Condition"(条件)字段,并输入您希望设置的条件表达式。例如,如果您想在变量
x
的值等于10时触发断点,您可以设置条件为x == 10
。 -
您还可以选择将条件与其他断点属性进行组合,例如"Hit Count"(命中计数)或"Suspend Policy"(挂起策略),以更精确地控制断点的触发方式。
-
设置完条件后,点击"OK"按钮应用更改并关闭对话框。
现在,当程序执行到包含条件断点的代码行时,Idea将根据设置的条件判断是否触发断点。如果条件为真,则程序会在该行暂停执行,以便您进行调试操作。否则,程序将继续正常执行,而不会触发断点。
条件断点是一种非常有用的调试技术,可以帮助您在复杂的代码逻辑中更加精确地跟踪和调试问题。通过设置适当的条件,您可以根据特定的变量值或其他运行时条件来触发断点,从而帮助您更快地定位和解决问题。
日志断点
日志断点是Idea调试功能的另一个强大特性,它允许您在不停止程序执行的情况下,在控制台或日志文件中输出自定义日志消息。以下是在Idea中设置日志断点的步骤:
-
在代码编辑器中找到您希望设置日志断点的行,并在该行左侧单击以创建一个断点。
-
右键单击断点,并选择"Edit Breakpoint"(编辑断点)选项。
-
在弹出的对话框中,您可以看到断点的详细信息和设置选项。
-
在对话框中,找到"Action"(操作)字段,并选择"Log Message"(日志消息)选项。
-
在"Text to log"(要记录的文本)字段中,输入您希望输出的日志消息。您可以使用普通文本、变量、表达式等来构建自定义的日志消息。
-
还可以选择将日志消息输出到不同的目标,如控制台或日志文件。在"Destination"(目标)字段中,选择您想要的输出目标。
-
设置完日志断点后,点击"OK"按钮应用更改并关闭对话框。
现在,当程序执行到包含日志断点的代码行时,Idea会在指定的目标上输出您设置的日志消息,而无需停止程序的执行。这对于快速检查变量值、调试流程或追踪代码执行路径非常有用。
日志断点可以帮助您在不中断程序执行的情况下获取关键信息,从而加快调试过程。您可以根据需要设置多个日志断点,并根据特定的上下文和需求输出不同的日志消息。
监视表达式
监视表达式是Idea调试功能中非常有用的功能,它允许您在调试过程中动态地监视变量或表达式的值。以下是在Idea中设置监视表达式的步骤:
-
在调试过程中,打开调试器窗口(通常位于Idea底部的面板之一)。
-
在调试器窗口的"Variables"(变量)选项卡中,找到您希望监视的变量或表达式,并右键单击。
-
在弹出的上下文菜单中,选择"Add Watch Expression"(添加监视表达式)选项。
-
在输入框中,输入要监视的变量名称或表达式。例如,您可以输入
myVariable
或myObject.getProperty()
。 -
按下Enter键或点击确认按钮来添加监视表达式。
现在,当程序执行到相应的代码行时,Idea会自动计算并显示监视表达式的值。您可以在调试过程中观察这些值的变化,并对其进行跟踪和分析。监视表达式将始终显示最新的值,并根据变量的更改而更新。
您还可以通过右键单击监视表达式并选择"Remove Watch"(移除监视)来删除不再需要的监视表达式。
监视表达式是一个强大的工具,可帮助您深入了解代码执行过程中变量的值,尤其在调试复杂的逻辑或追踪问题时非常有用。通过动态监视表达式的值,您可以更好地理解代码的行为,并发现潜在的错误或异常情况。
运行到光标处
运行到光标处(Run to Cursor)是Idea调试功能中的一个实用功能,它允许您将程序的执行从当前位置快速运行到光标所在的位置,而无需设置断点。以下是在Idea中使用运行到光标处的步骤:
-
在代码编辑器中,将光标定位到您希望程序执行到的位置。
-
使用快捷键Ctrl+Shift+F9,或者在编辑器中右键单击并选择"Run to Cursor"选项。
-
Idea会自动将程序的执行流从当前位置快速运行到光标所在的位置,而不会在这之间的代码行上设置断点。
通过运行到光标处,您可以跳过一些代码行,直接将程序执行到感兴趣的位置,从而更高效地进行调试和验证代码逻辑。
请注意,运行到光标处只是临时性的,它不会在目标位置上停止程序的执行。如果您需要在特定位置进行更详细的调试操作,仍然需要设置断点并使用调试模式运行程序。
运行到光标处是Idea调试功能中的一个快捷方式,特别适合在快速验证和调试代码时使用。它可以帮助您更快地移动执行流,并在关键位置进行检查和验证。
调试过滤器
调试过滤器(Debug Filters)是Idea调试功能中的一个重要特性,它允许您排除不需要进行调试的类、方法或包。通过配置调试过滤器,可以避免不必要的断点触发和代码跟踪,提高调试效率。以下是在Idea中配置调试过滤器的步骤:
-
打开Idea的设置(Preferences)对话框。在Windows和Linux上,选择"File"菜单中的"Settings"选项;在macOS上,选择"IntelliJ IDEA"菜单中的"Preferences"选项。
-
在设置对话框中,找到"Build, Execution, Deployment"(构建、执行、部署)部分,并展开它。
-
选择"Debugger"(调试器)选项卡,然后选择"Stepping"(步进)子选项卡。
-
在"Skip debugging"(跳过调试)部分,您可以看到几个调试过滤器的选项。
-
根据您的需求,在"Skip classes"(跳过类)、“Skip methods”(跳过方法)或"Skip packages"(跳过包)字段中,输入您希望排除的类、方法或包的名称。您可以使用通配符来匹配多个类、方法或包。
-
点击"Apply"(应用)或"OK"按钮来保存更改并关闭设置对话框。
现在,当您在调试模式下运行程序时,Idea将根据配置的调试过滤器来跳过指定的类、方法或包。这些被排除的代码将不会触发断点,并且不会进行代码跟踪和调试。
通过配置调试过滤器,您可以有选择地控制需要进行调试的代码范围,避免无关的代码干扰调试过程。这对于大型项目或具有复杂逻辑的代码库特别有用,可以提高调试效率和精确性。
多线程调试
Idea提供了丰富的多线程调试功能,可以帮助您在调试过程中查看和控制线程的状态。以下是在Idea中使用多线程调试功能的步骤:
-
在调试模式下运行程序,并打开调试器窗口(通常位于Idea底部的面板之一)。
-
在调试器窗口中选择"Threads"(线程)选项卡,以查看当前正在执行的线程列表。
-
您可以看到每个线程的名称、状态和调用栈信息。常见的线程状态包括运行中(Running)、等待中(Waiting)、阻塞中(Blocked)等。
-
通过右键单击线程,您可以执行以下操作:
- “Suspend”(暂停):暂停选定的线程,使其停止执行。
- “Resume”(恢复):恢复选定的线程,使其继续执行。
- “Stop”(停止):停止选定的线程,终止其执行。
- “Set Breakpoint”(设置断点):为选定的线程设置断点,当线程执行到断点处时将暂停执行。
-
您还可以通过在调试器窗口的顶部工具栏中使用相关按钮来控制线程的状态。例如,暂停所有线程、恢复所有线程、仅暂停当前活动线程等。
通过多线程调试功能,您可以监视和控制程序中的不同线程,以便更好地理解和调试多线程并发问题。您可以暂停、恢复和停止线程,观察线程之间的相互作用,并在需要时设置线程断点以进行更精确的调试操作。
请注意,多线程调试涉及到程序的并发执行,因此需要谨慎使用。确保您在调试过程中了解线程之间的依赖关系和互动方式,以避免可能导致死锁或其他并发问题的情况。