在命令行中可以使用jdb命令来进行类的调试: 类Hello.java如下: class Hello{ public static void main(String[] args){ 输出100/0的结果:"); System.out.println(100/0); } } 在类目录下使用 javac Hello.java 命令编译该类生成字节码文件; 使用 jdb 命令开启调试 使用 run 命令运行java类: D:\java_basic_note>jdb Hello 正在初始化jdb... > run 运行Hello 设置未捕获的java.lang.Throwable
可以使用Java JDK自带的JDB工具在命令行中直接对Java程序进行调试,JDB的使用和C++ GDB以及Python 的PDG调试类似。 图片操作实践:我们在命令行通过JDB命令启动Java程序:jdb -Dsnap.mainClass=org.esa.snap.core.gpf.main.GPT -Dsnap.home=/Users/tanzhenyu 42.10, 86.70 41.80, 87.40 41.80))" -Ssource=A2014115074500.L2.h5 -f HDF5 -t A2014115074500.L2.h5图片启动JDB 调试完成,通过exit或者quit退出JDB调试。图片这里涉及很多JDB命令,我们进入JDB以后,可以通过help命令查询这些命令是干什么用的,不用刻意进行记忆。基本上每个命令的名字大致给出了其作用。
1) jdb调试正在运行的进程: 先使用jps先确定进程号,然后让jdb连接上目标进程(23549换成实际的进程号): jdb -connect sun.jvm.hotspot.jdi.SAPIDAttachingConnector :pid=23549 接着,可以使用thread N切换线程(使用threads命令可以查看有哪些线程),如:thread 1,然后就可以使用where命令查看调用栈了(jdb中的where相当于 2) jdb调试未运行的程序: 程序代码: hadoop@hadoop-137-143:~/hbase> cat Hello.java public class Hello { public 开始调试,执行下面命令进入jdb: jdb -classpath .
可以使用Java JDK自带的JDB工具在命令行中直接对Java程序进行调试,JDB的使用和C++ GDB以及Python 的PDG调试类似。 操作实践: 我们在命令行通过JDB命令启动Java程序: jdb -Dsnap.mainClass=org.esa.snap.core.gpf.main.GPT -Dsnap.home=/Users/tanzhenyu 42.10, 86.70 41.80, 87.40 41.80))" -Ssource=A2014115074500.L2.h5 -f HDF5 -t A2014115074500.L2.h5 启动JDB 调试完成,通过exit或者quit退出JDB调试。 这里涉及很多JDB命令,我们进入JDB以后,可以通过help命令查询这些命令是干什么用的,不用刻意进行记忆。基本上每个命令的名字大致给出了其作用。
JDB调试Android程序 在App动态调试(1)-Radare2和lldb 中对JDB调试进行了简单的介绍,通过jdb调试来跟踪指定的动态库加载完成。 在调试 Android 应用程序这一场景,Debugger 一般是指你的 develop machine 的某一支持 JDWP 协议的工具例如 Android Studio 或者 JDB,而 Target JDB命令列表 这个除了step、stop,其他的用的不太多,除非要自己开发调试器。 reenter | 与 pop 相同, 但重新进入当前帧 redefine | 重新定义类的代码 disablegc | 禁止对象的垃圾收集 enablegc | 允许对象的垃圾收集 调试程序 使用JDB 和app之间建立联系 jdb -attach localhost:12345 (4)设置断点 stop in com.example.myapplication.MainActivity.onCreate
这个案例是客户的一个12c的集群环境,由于TFA的jdb文件无限积累造成大量空间被占用,导致数据库目录使用率比较高。 :18 00001fc0.jdb -rw-r--r-- 1 root root 9999995 1月 13 10:59 00001fc1.jdb -rw-r--r-- 1 root root 9999976 1月 16 23:05 00001fc2.jdb -rw-r--r-- 1 root root 9999983 1月 18 00:31 00001fc3.jdb -rw-r-- r-- 1 root root 899218 1月 18 10:42 00001fc4.jdb 可以看到tfa的BERKELEY_JE_DB目录占用了25G的磁盘空间,累积了大量的000开头.jdb 一般情况下,tfa对该目录下的jdb文件是自动维护的,不会引起持续的积累引起文件目录堆积占用过多的空间,既然出现了问题,直接处理就行了。
JDB JDB 是基于文本和命令行的调试工具,Jikes 在 JDB 的基础上提供了 GUI。熟悉 JDB 还是有价值的,很多情况下需要我们在命令行下完成简单的 debug 问题定位。 jdb -classpath bin com.xx.Example jdb -connect com.sun.jdi.SocketAttach:hostname=myhost,port=8000 jdb -connect "com.sun.jdi.CommandLineLaunch:main=Hello 1 2 3" 我们可能更熟悉使用下面这样的方式来进行调试,但本质上就是在使用 JDB: -agentlib
和 gdb 一样,jdb 也是一个命令行版的调试器,用于调试 Java 程序。而且 jdb 不需要安装下载,它是 JDK 自带的工具(在 JDK 的 bin 目录中,JRE 中没有)。 2.1 jdb 基本命令 在 jdb 中调试 Java 程序如下图所示,直接使用 jdb Test 命令加载程序即可。 ? 2.2 探索 class 文件结构 在 jdb 中调试 Java 程序时,有可能源代码文件和 class 文件不在一起,这个时候需要指定源码位置: # jdb -sourcepath path/to/source 在程序运行起来之后,可以使用 jdb 的 -attach 参数将调试器和被调试程序连接起来: # jdb -attach 5005 # jdb -attach javadebug 在 Windows 平台上 总结 这篇文章首先介绍了 IDEA 的一些常用调试技巧,然后通过使用 jdb 进行 Java 程序的调试,学习了 jdb 的常用命令,最后通过远程调试引出调试器原理的话题,对 JPDA、JVMTI、JDWP
可以使用Eclipse或IntelliJ等集成开发环境(IDE)来实现这一点,或者使用Java调试器(如jdb)来手动插入断点。 启动程序的调试模式。 如果使用jdb,可以通过命令行运行“jdb <程序名>”来启动调试模式。 执行程序并触发断点。在调试模式下,程序将暂停在第一个断点处。通过执行程序,可以触发断点并进入调试模式。 在jdb中,可以使用“where”命令来查看当前调用路径。 通过这些步骤,您应该能够查看Java接口的调用路径。请注意,这种方法适用于调试已经运行的程序。
,附加上对应的进程之后,设置IDA中的load so的时机,在debug options中设置一下,后面会有实战部分; 5.adb forward tcp:8700 jdwp:进程号;(jdwp是后面jdb 调试器的协议,转换到待调试的指定的应用程序); 6.jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=8700(jdb进行附加) 反附加,在这块重要的是说jdb的反附加,很多情况下jdb会附加不上,就是会出现“无法附加到目标的VM”这样的问题那是因为在每个应用程序下,有这个android:debuggable="true"才能调试 打开IDA,设置 4.附加上对应的进程进去之后如图: 5.这一步很重要在Debugger option下面选择这三个选项(让在load so的每个接口处停下来) 6.jdwp协议端口转发 7.jdb 这里只需配置hostname为localhost,其余的保持默认设置即可 6.单击Debugger -> Attach to process进行附加进程 7.jdwp转发(当然打开DDMS就不需要这一步了)jdb
区容量和使用量 OC、OU:年老代容量和使用量 PC、PU:永久代容量和使用量 YGC、YGT:年轻代GC次数和GC耗时 FGC、FGCT:Full GC次数和Full GC耗时 GCT:GC总耗时 调试工具 jdb 远程调试端口是8000 jdb -attach 8000 JVM 参数配置 应用宕了,生成dump -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath
➤ jdb 时至今日,jdb也是经常使用的。 jdb可以用来预发debug,假设你预发的java_home是/opt/taobao/java/,远程调试端口是8000, 那么: sudo -u admin /opt/taobao/java/bin /jdb -attach 8000 ➤ CHLSDB CHLSDB感觉很多情况下可以看到更好玩的东西,不详细叙述了。 sudo -u admin /opt/taobao/java/bin/java -classpath /opt/taobao/java/lib 出现以上代表jdb启动成功。 具体参数可见Oracle官方说明:http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.html ➤ plugin of intellij
language compiler,Java编译器,类似gcc java – the Java Application Launcher,Java程序加载器,类似操作系统的进程加载器(Loader) jdb 需要调试可以参考jdb。
某个属性名及属性值 具有某个属性名及属性值某个标签 /*[hobby]找只要包含某个属性名的标签*/ [hobby]{ background-color: red; } [hobby="jdb "]{ color="jdb"; } /*找具有属性名是hobby 并且值是 jdb的 input标签*/ input[hobby="jdb"]{ color: red; } /*
jdb 时至今日,jdb也是经常使用的。 jdb可以用来预发debug,假设你预发的java_home是/opt/taobao/java/,远程调试端口是8000.那么 sudo -u admin /opt/taobao/java/bin/jdb 出现以上代表jdb启动成功。后续可以进行设置断点进行调试。 具体参数可见oracle官方说明http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.html CHLSDB CHLSDB感觉很多情况下可以看到更好玩的东西
jdb 时至今日,jdb也是经常使用的。 jdb可以用来预发debug,假设你预发的java_home是/opt/taobao/java/,远程调试端口是8000.那么 sudo -u admin /opt/taobao/java/bin/jdb 出现以上代表jdb启动成功。后续可以进行设置断点进行调试。 具体参数可见oracle官方说明http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.html CHLSDB CHLSDB感觉很多情况下可以看到更好玩的东西
调试步骤: 1.Apk(debuggable)或系统(ro.debuggable=1)设置为可调试 2.在虚拟机中启动服务端(adbd/android_server) 3.在主机端连接客户端调试器(IDA/jdb 工具集、jd-core(JD-GUI,JD-Eclipse反编译核心)、fernflower(Android Studio反编 、procyon 回编译:aapt、dex2jar工具集 调试器:IDA、jdb 调试 jdb是一个支持java代码级调试的工具,它是由java jdk提供的,可以设置断点、查看堆栈、计算表达式、动态修改类字节码、调试&跟踪、修改变量值、线程操作,断点包括:(源码)行断点、符号断点、 就会导致app运行起来,此时如果想断在初始化这部分就没有办法了,不过jdb提供初始命令脚本 暂停所有线程: echo suspend > jdb.ini 执行调试:jdb -connect com.sun.jdi.SocketAttach Set up JDB connection, using jdb command: C:\Program Files\Java\jdk1.8.0_66\bin\jdb.exe ## COMMAND: adb_cmd
jstat jstat参数众多,但是使用一个就够了 sudo -u admin /opt/install/ajdk-8_1_1_fp1-b52/bin/jstat \ -gcutil 2815 1000 jdb jdb可以用来预发debug,假设你预发的java_home是/opt/taobao/java/,远程调试端口是8000,那么: sudo -u admin /opt/java/bin/jdb -attach
jdb 时至今日,jdb也是经常使用的。 jdb可以用来预发debug,假设你预发的java_home是/opt/taobao/java/,远程调试端口是8000.那么 sudo -u admin /opt/taobao/java/bin/jdb 出现以上代表jdb启动成功。后续可以进行设置断点进行调试。 具体参数可见oracle官方说明: http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.html plugin of intellij
jdb 时至今日,jdb也是经常使用的。 jdb可以用来预发debug,假设你预发的java_home是/opt/taobao/java/,远程调试端口是8000.那么 sudo -u admin /opt/taobao/java/bin/jdb 出现以上代表jdb启动成功。后续可以进行设置断点进行调试。 具体参数可见oracle官方说明http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.html CHLSDB CHLSDB感觉很多情况下可以看到更好玩的东西