jdb - The Java Debugger
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的更多相关文章
- 十、jdk工具之Jdb命令(The Java Debugger)
目录 一.jdk工具之jps(JVM Process Status Tools)命令使用 二.jdk命令之javah命令(C Header and Stub File Generator) 三.jdk ...
- 使用JDB调试Java程序
Java程序中有逻辑错误,就需要使用JDB来进行调试了.调试程序在IDE中很方便了,比如这篇博客介绍了在Intellj IDEA中调试Java程序的方法. 我们课程内容推荐在Linux环境下学习,有同 ...
- 命令行工具jdb调试Java程序
一直在gdb 下调试c/c++程序. 突然要写个java程序,又不是很喜欢使用eclipse,那怎么调试程序呢.你还可以使用 jdb. 它是jdk 内置的一个java debug工具.类似与 gdb. ...
- java debugger
当你想找方法被哪个地方调用了,可以打断点看debugger方法栈 idea Debugger
- Debug with jdb
原文地址: http://www.javaworld.com/article/2077445/testing-debugging/debug-with-jdb.html Q: How do you u ...
- Java控制台常用命令
http://docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html javaw是java的带console版本,其他一致. h ...
- Java Basic&Security Tools
JDK Tools and Utilities Basic Tools These tools are the foundation of the JDK. They are the tools yo ...
- Java版本和功能指南
您可以使用本指南查找和安装最新的Java,了解Java发行版(AdoptOpenJdk,OpenJDK,OracleJDK等)之间的差异,以及获得Java语言功能的概述,包括Java版本8-13. J ...
- java jdb命令详解
jdb - Java debugger 功能描述: 通过简单的命令行程序,对本地或远程jvm进程进行调试. 开启jdb会话: 有多种方式可以开启jdb会话. (1)常见的方式是采用Jdb命令打开一个新 ...
随机推荐
- RHEL 6.3 详细安装教程
以前刚接触linux时,什么都不懂,为了学习,在电脑上安装双系统(原系统为Win7),吃过不少苦头,在网上搜教程,很多都是语焉不详,导致安装过程中战战兢兢.最近朋友面试运维,面试官有考他对linux安 ...
- Difference Between HashMap and IdentityHashMap--转
原文地址:https://dzone.com/articles/difference-between-hashmap-and Most of the time I use HashMap whenev ...
- 介绍一个很爽的 php 字符串特定检索函数---strpos()
大家在用 php 开发的时候 是否 有遇到过,对于一个获取的字符串,如果想要特定检测它是否 含有某个特定的字符或者子字符串,总是找不到好方法,或者根本做不到,迫于无奈而使用foreach. 函数: s ...
- AWS CLI使用s3
aws CLI是什么东西,暂且先不去了解,目前的需求是s3. 我在Jenkins上创建一个bucket,然后申请access_key,然后就可以使用s3来存储数据了.也就是说,s3就是一个网盘. 1. ...
- 小白Linux入门 一
1 win7电脑上安装虚拟机,准备文件 vmware 12 http://www.orsoon.com/Soft/89658.html ubuntu 16.04 http://cn.ubuntu.c ...
- 一言不合就动手系列篇一-仿电商平台前端搜索插件(filterMore)
话说某年某月某日,后台系统需要重构,当时公司还没有专业前端,由我负责前台页面框架搭建,做过后台系统的都知道,传统的管理系统大部分都是列表界面和编辑界面.列表界面又由表格和搜索框组成, 对于全部都是输入 ...
- Centos6 yum安装openldap+phpldapadmin+TLS+双主配置
原文地址:http://54im.com/openldap/centos-6-yum-install-openldap-phpldapadmin-tls-%E5%8F%8C%E4%B8%BB%E9%8 ...
- Xamarin.Android再体验之简单的登录Demo
一.前言 在空闲之余,学学新东西 二.服务端的代码编写与部署 这里采取的方式是MVC+EF返回Json数据,(本来是想用Nancy来实现的,想想电脑太卡就不开多个虚拟机了,用用IIS部署也好) 主要是 ...
- 【C#】分享一个可携带附加消息的增强消息框MessageBoxEx
--------------201507160917更新--------------- 无意中发现标准消息框在Windows7是有声音的,只是在Windows server 2008(R2)无声,而我 ...
- Asp.net 面向接口可扩展框架之类型转化基础服务
新框架正在逐步完善,可喜可贺的是基础服务部分初具模样了,给大家分享一下 由于基础服务涉及面太广,也没开发完,这篇只介绍其中的类型转化部分,命名为类型转化基础服务,其实就是基础服务模块的类型转化子模块 ...

