jdb 是一个简单的命令行调试器,可以调试本地或远程 Java Virtual Machine。

jdb [ options ] [ class ] [ arguments ]
options 命令行参数
class  调试的类名称
arguments main函数的参数
1. 开始调试
  有两种方式启动调试,一个是新启动一个 JVM 加载指定的类,然后在开始执行指令时停止;另一个是连接到一个正在运行的 JVM。具体方法如下。
(1) C:\> jdb MyClass
(2) C:\> java -agentlib:jdwp=transport=dt_shmem,address=jdbconn,server=y,suspend=n MyClass  C:\> jdb -attach jdbconn
2. jdb 基本操作命令
help, or ?  显示帮助信息
run [class [args]]    执行 main 方法
threads 列出正在运行的线程
thread <thread id>  设置默认线程
where   转储线程堆栈

print  显示Java对象(简短描述)或原始数据类型值,若要显示本地变量在编译时需添加 -g 参数
  print 支持简单的Java表达式,如下:
    print MyClass.myStaticField
    print myObj.myInstanceField
    print i + j + k (i, j, k are primities and either fields or local variables)
    print myObj.myMethod() (if myMethod returns a non-null)
    print new java.lang.String("Hello").length()
dump    原始类型打印值,对象打印每个字段(静态和实例)的当前值,同print也支持表达式
locals 输出当前栈帧本地变量

classes 列出当前已知的类
class <class id>    显示类详细信息
methods <class id>  列出类方法
fields <class id>   列出类字段

stop in <class id>.<method>[(argument_type,...)]  在方法中设置断点
stop at <class id>:<line> 在某一行设置断点
  stop at MyClass:22 (在 MyClass 第22行设置断点)
  stop in java.lang.String.length (在String.length方法设置断点)
  stop in MyClass.<init>   (MyClass 构造函数)
  stop in MyClass.<clinit> (MyClass 静态块初始化方法)
clear <class id>.<method>[(argument_type,...)]  清除一个方法的断点
clear <class id>:<line>   清除某一行断点
clear                     列出所有断点

step  执行到下一行
next  执行当前栈帧下一行
cont   从断点处继续执行
exit 退出
3. 命令行选项
# jdb 也识别许多java命令选项,如-D,-classpath,-X<option>(非标准 VM 选项)
-help  显示帮助信息
-sourcepath <dir1:dir2:...>  在指定路径下搜索源文件,默认在当前目录下
-connect <connector-name>:<name1>=<value1>,...  附带参数连接到目标 JVM
-tclient  Java HotSpot™ VM (Client)
-tserver  Java HotSpot™ VM (Server)
-Joption  将选项传递给JVM,以运行jdb,如-J-Xms48m 设置堆大小
4. 调试 Hello World

更多信息,请参考:jdb

jdb - The Java Debugger的更多相关文章

  1. 十、jdk工具之Jdb命令(The Java Debugger)

    目录 一.jdk工具之jps(JVM Process Status Tools)命令使用 二.jdk命令之javah命令(C Header and Stub File Generator) 三.jdk ...

  2. 使用JDB调试Java程序

    Java程序中有逻辑错误,就需要使用JDB来进行调试了.调试程序在IDE中很方便了,比如这篇博客介绍了在Intellj IDEA中调试Java程序的方法. 我们课程内容推荐在Linux环境下学习,有同 ...

  3. 命令行工具jdb调试Java程序

    一直在gdb 下调试c/c++程序. 突然要写个java程序,又不是很喜欢使用eclipse,那怎么调试程序呢.你还可以使用 jdb. 它是jdk 内置的一个java debug工具.类似与 gdb. ...

  4. java debugger

    当你想找方法被哪个地方调用了,可以打断点看debugger方法栈 idea Debugger

  5. Debug with jdb

    原文地址: http://www.javaworld.com/article/2077445/testing-debugging/debug-with-jdb.html Q: How do you u ...

  6. Java控制台常用命令

    http://docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html javaw是java的带console版本,其他一致. h ...

  7. Java Basic&Security Tools

    JDK Tools and Utilities Basic Tools These tools are the foundation of the JDK. They are the tools yo ...

  8. Java版本和功能指南

    您可以使用本指南查找和安装最新的Java,了解Java发行版(AdoptOpenJdk,OpenJDK,OracleJDK等)之间的差异,以及获得Java语言功能的概述,包括Java版本8-13. J ...

  9. java jdb命令详解

    jdb - Java debugger 功能描述: 通过简单的命令行程序,对本地或远程jvm进程进行调试. 开启jdb会话: 有多种方式可以开启jdb会话. (1)常见的方式是采用Jdb命令打开一个新 ...

随机推荐

  1. 如何用Perl对Excel的数据进行提取并分析

    巡检类工作经常会出具日报,最近在原有日报的基础上又新增了一个表的数据量统计日报,主要是针对数据库中使用较频繁,数据量又较大的31张表.该日报有两个sheet组成,第一个sheet是数据填写,第二个sh ...

  2. 爱与恨的抉择:ASP.NET 5+EntityFramework 7

    EF7 的纠缠 ASP.NET 5 的无助 忘不了你的好 一开始列出的这个博文大纲,让我想到了很久之前的一篇博文:恋爱虽易,相处不易:当EntityFramework爱上AutoMapper,只不过这 ...

  3. 软件开发常用设计模式—单例模式总结(c++版)

    单例模式:就是只有一个实例. singleton pattern单例模式:确保某一个类在程序运行中只能生成一个实例,并提供一个访问它的全局访问点.这个类称为单例类.如一个工程中,数据库访问对象只有一个 ...

  4. 关于jqGrig如何写自定义格式化函数将JSON数据的字符串转换为表格各个列的值

    首先介绍一下jqGrid是一个jQuery的一个表格框架,现在有一个需求就是将数据库表的数据拿出来显示出来,分别有id,name,details三个字段,其中难点就是details字段,它的数据是这样 ...

  5. asp.net留言板项目源代码下载

    HoverTree是一个asp.net开源项目,实现了留言板功能. 前台体验网址:http://hovertree.com/guestbook/ 后台请下载源代码安装. 默认用户名:keleyi 默认 ...

  6. ArcGIS10.2 应用服务器搭建

    操作系统:Windows Server2012R2 DataCenter 软件环境:ArcGIS Desktop10.2,ArcSDE10.2,ArcGIS Server10.2,win64_11gR ...

  7. 【linux草鞋应用编程系列】_2_ 环境变量和进程控制

    一. 环境变量     应用程序在执行的时候,可能需要获取系统的环境变量,从而执行一些相应的操作.     在linux中有两种方法获取环境变量,分述如下.   1.通过main函数的参数获取环境变量 ...

  8. java timer 执行任务

    1. 建立timer import java.util.Timer; import java.util.TimerTask; public class Start { public class Sta ...

  9. 线程池深入(li)

    java线程池.在jdk5之后为我们提供了线程池,只需要使用API,不用去考虑线程池里特殊的处理机制.jdk5线程池分好多种,固定尺寸的线程池.可变尺寸连接池等.常用的是ThreadPoolExecu ...

  10. No.008:String to Integer (atoi)

    问题: Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input ca ...