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命令打开一个新 ...
随机推荐
- geotrellis使用(十六)使用缓冲区分析的方式解决投影变换中边缘数据值计算的问题
Geotrellis系列文章链接地址http://www.cnblogs.com/shoufengwei/p/5619419.html 目录 前言 问题探索 采样说明 实现方案 总结 一.前言 ...
- ios如何在#import方面提升编译性能
模块的使用非常简单,对于存在的工程,第一件事情就是让这个功能生效.可以在项目的Build Settings 中搜索Modules 找到这个选项,做以下的设置 默认的情况下都是开启的 对于系统自带的只需 ...
- C++继承和多态
继承 访问控制 基类的成员函数可以有public.protected.private三种访问属性. 类的继承方式有public.protected.private三种. 公有继承 当类的继承方式为pu ...
- iOS开发多线程篇—多线程简单介绍
iOS开发多线程篇—多线程简单介绍 一.进程和线程 1.什么是进程 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 比如同时打开QQ.Xcod ...
- 通过手动创建统计信息优化sql查询性能案例
本质原因在于:SQL Server 统计信息只包含复合索引的第一个列的信息,而不包含复合索引数据组合的信息 来源于工作中的一个实际问题, 这里是组合列数据不均匀导致查询无法预估数据行数,从而导致无法选 ...
- MVC发布后项目存在于根目录中的子目录中时的css与js、图片路径问题
加载固定资源js与css <script src="@Url.Content("~/Scripts/js/jquery.min.js")" type=&q ...
- Java 技能树
- Spring Scope:Web项目中如何安全使用有状态的Bean对象?
Web系统是最常见的Java应用系统之一,现在流行的Web项目多使用ssm或ssh框架,使用spring进行bean的管理,这为我们编写web项目带来了很多方便,通常,我们的controler层使用注 ...
- jQuery带控制按钮向上和向下滚动文本列表
效果:http://hovertree.com/texiao/jquery/64/ 效果图如下: 代码如下: <!DOCTYPE html> <html> <head&g ...
- C#中实现对象间的更新操作
最近工作的时候遇到一个问题,根据Web端接收到的对象obj1,更新对应的对象值ogj2.先判断obj1中属性值是否为null, 若不等于null,则更新obj2中对应属性值:若等于null,则保持ob ...