`

JDB 远程调试 java程序

 
阅读更多

断点调式是软件开发过程中跟踪解决问题的必备手段,因为代码并不总是按照“我们想要的路径”执行。我们经常用到的是在开发阶段调试,通过各种IDE可以很方便的执行eclipse、VS等。

在发布环境或者没有源代码的情况下,IDE就不适用了。Java提供了命令行工具jdb - The Java Debugger。

文档上描述的用法是:

jdb [ options ] [ class ] [ arguments ] 

在实际使用时通常是通过jdb挂载到正在运行的虚拟机上,通过设置断点观察代码运行情况,典型用法如下

 

>>在启动脚本中增加如下参数,调试模式启动JVM

-agentlib:jdwp=transport=dt_socket,address=192.168.9.116:9999,server=y,suspend=n

 以上参数针对不同JDK版本有少许差异,详见参考链接。

 

>>连接到目标JVM

jdb -attach 192.168.9.116:9999

命令连接到运行中的虚拟机,然后通过各种命令查看局部变量等信息。常用命令有:

 

>>设置断点

stop in <full-class-path>.<method>[(argument_type,...)] -- set a breakpoint in a method
stop at <full-class-path>:<line> -- set a breakpoint at a line

在full-class-path的method方法首行设置断点

 

>>列出所有断点

 

clear
>>删除断点

 

clear <class id>.<method>[(argument_type,...)]   -- clear a breakpoint in a method
clear <class id>:<line>   -- clear a breakpoint at a line

 

>>单步调试

step

 

 >>步入,对应Eclipse debug视图的F5

next

 

>>单步调试,对应Eclipse debug视图的F6

step up

 

>>返回方法调用点,对应Eclipse debug视图的F7

cont

 

>>从断点处一直执行,对应Eclipse debug视图的F8

locals

 

>>打印全部局/部变量

print <expr>

打印变量/表达式的值

list [line number|method] -- print source code

 >>打印堆栈

where [<thread id> | all] -- dump a thread's stack

 

其他详细用法可以通过 help 查看帮助文档。

 

【参考连接】

https://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.html

https://docs.oracle.com/javase/7/docs/technotes/guides/jpda/conninv.html

分享到:
评论

相关推荐

    JDB调试安卓应用程序测试应用

    此外,JDB还支持远程调试,这对于多设备协作或者云测试非常有用。只需在服务器上启动应用,并将JDB连接到服务器的特定端口,即可实现远程调试。 总的来说,JDB虽然不如图形化的IDE(如Android Studio的调试器)直观...

    java 远程调试一个朋友推荐

    Java Development Kit (JDK) 提供了一些内置工具,如`jdb`和`jdwp`(Java Debug Wire Protocol),可以直接用于远程调试。 - **启动远程调试服务**:在远程服务器上启动Java应用时添加`-agentlib:jdwp=transport=dt...

    JDB断点调试

    JDB(Java Debugger)是Java SDK自带的一个命令行调试工具,它可以用来对Java应用程序进行远程或本地的源代码级调试。本文将深入探讨JDB断点调试技术,以及如何在Java应用程序中连接数据库。 首先,我们需要理解...

    javajava调试java调试java调试java调试

    在Java编程过程中,遇到程序出错或运行异常时,调试是找出问题源头的关键步骤。本文将详细介绍Java调试的一些核心技术和方法。 首先,Java调试的基础是JVM(Java虚拟机)提供的调试接口JDWP(Java Debug Wire ...

    学习调试java源码学习调试java源码

    JDI是Java虚拟机工具接口的一部分,提供了调试API,而JDB则是一个命令行工具,可以用来远程或本地调试Java应用。 1. **设置断点**:在源码中设置断点是调试的第一步。你可以使用IDE(如Eclipse、IntelliJ IDEA或...

    Android So动态调试之反jdb附加的解决大法

    JDB是Java平台的标准调试工具,它允许开发者通过网络连接到运行中的Java虚拟机(JVM)进行远程调试。在Android系统中,由于Dalvik虚拟机(或ART运行时)的设计,JDB可以用于调试Dalvik字节码,但对原生代码(C/C++...

    调试java源码环境调试java源码环境

    - 端点设置:如果需要远程调试,可以在`VM arguments`中添加`-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005`,这将暂停应用程序启动,等待调试器连接。 - 启动调试:点击`Debug`按钮开始...

    JAVA高端进阶开发课程 JAVA应用程序调试技术 从实战角度出发学习JAVA应用程序调试.rar

    JDB是一个命令行工具,适用于基础的远程调试和自动化脚本,而IDE集成的调试器则提供了更丰富的图形界面,使得设置断点、单步执行、查看变量值等操作更为便捷。 在实战调试过程中,我们将学习如何设置断点、跟踪代码...

    远程调试工具

    远程调试工具是软件开发过程中非常重要的辅助工具,它允许开发者在本地计算机上对运行在远程设备或服务器上的程序进行调试,极大地提高了开发效率和问题排查的便利性。在这个压缩包中,包含了一个名为"试.exe"的文件...

    java进行远程部署与调试及原理详解

    Java 远程调试是指在远程服务器上调试 Java 应用程序,以便发现和修复程序中的错误。这种方法可以帮助开发者快速地定位和解决问题,提高开发效率。 远程调试原理 Java 远程调试的原理是基于 JVM 的调试机制。JVM ...

    java调试参数

    例如,使用命令行参数`-Xrunjdwp:transport=dt_socket,server=y,address=9999`启动Java程序时,表示该程序将作为调试服务器,在9999端口监听来自调试客户端的连接请求。 #### 示例:启动Java应用进行调试 假设我们...

    jdbczuoye.rar

    【标题】"jdbczuoye.rar"可能是一个Java Debug Bridge(JDB)相关的作业或项目压缩包,其中包含了与使用JDB调试Java应用程序相关的资料。JDB是Java Development Kit(JDK)的一部分,它提供了一个命令行工具,允许...

    JVM监控工具介绍jstack_jconsole_jinfo_jmap_jdb_jstat

    jdb工具的功能与Sun Studio中的dbx非常相似,但jdb专门用于Java应用程序的调试。 jstat jstat是一个命令行工具,利用了JVM内建的指令对Java应用程序的资源和性能进行实时的命令行监控,包括对Heap size和垃圾回收...

    Java应用程序开发LINUX平台.chm

    在Linux上调试Java程序,可以使用IDE内置的调试工具,也可以通过命令行使用JDB。JDB是Java的命令行调试器,虽然不如图形界面方便,但在某些场景下非常有用,比如远程调试。 协同开发和版本控制是现代开发流程的重要...

    利用vscode创建的spring基础调试项目

    在其他IDE或终端中,使用`telnet`或`jdb`连接到5005端口进行远程调试。 总结,本项目"利用vscode创建的spring基础调试项目"主要涵盖了以下几个知识点: 1. Spring Boot的基础概念及其在Java开发中的作用。 2. 使用...

    Java内存泄露_JVM监控工具介绍

    此外,jstack工具还可以附属到正在运行的Java程序中,看到当前运行的Java程序的Java栈和native栈的信息,如果现在运行的Java程序呈现hung的状态,jstack是非常有用的。 二、jconsole命令 jconsole是一个基于Java ...

    施懿民:生产环境下的Java排错调优

    在生产环境中进行Java应用的排错与优化时,远程调试是一项非常重要的技术。它允许开发人员或运维工程师在不直接接触生产服务器的情况下,对运行在远程服务器上的Java应用进行调试和性能分析。这不仅可以减少停机时间...

Global site tag (gtag.js) - Google Analytics