java jdb 调试
[hadoop@hadoop-01 ~]$ javac -help
Usage: javac <options> <source files>
where possible options include:
-g Generate all debugging info
-g:none Generate no debugging info
-g:{lines,vars,source} Generate only some debugging info
-nowarn Generate no warnings
-verbose Output messages about what the compiler is doing
-deprecation Output source locations where deprecated APIs are used
-classpath <path> Specify where to find user class files and annotation processors
-cp <path> Specify where to find user class files and annotation processors
-sourcepath <path> Specify where to find input source files
-bootclasspath <path> Override location of bootstrap class files
-extdirs <dirs> Override location of installed extensions
-endorseddirs <dirs> Override location of endorsed standards path
-proc:{none,only} Control whether annotation processing and/or compilation is done.
-processor <class1>[,<class2>,<class3>...] Names of the annotation processors to run; bypasses default discovery process
-processorpath <path> Specify where to find annotation processors
-parameters Generate metadata for reflection on method parameters
-d <directory> Specify where to place generated class files
-s <directory> Specify where to place generated source files
-h <directory> Specify where to place generated native header files
-implicit:{none,class} Specify whether or not to generate class files for implicitly referenced files
-encoding <encoding> Specify character encoding used by source files
-source <release> Provide source compatibility with specified release
-target <release> Generate class files for specific VM version
-profile <profile> Check that API used is available in the specified profile
-version Version information
-help Print a synopsis of standard options
-Akey[=value] Options to pass to annotation processors
-X Print a synopsis of nonstandard options
-J<flag> Pass <flag> directly to the runtime system
-Werror Terminate compilation if warnings occur
@<filename> Read options and filenames from file [hadoop@hadoop-01 ~]$ vi HelloJDB.java
public class HelloJDB {
public static void main(String...args) {
int i = 5;
int j = 6;
int sum = add(i, j);
sum = 0;
for (i = 0; i < 100; i++) {
sum += i;
}
System.out.println(sum);
}
public static int add(int augend, int addend) {
int sum = augend + addend;
return sum;
}
} [hadoop@hadoop-01 ~]$ javac -g HelloJDB.java
[hadoop@hadoop-01 ~]$ jdb -classpath .:HelloJDB
Initializing jdb ...
> help
** command list **
connectors -- list available connectors and transports in this VM run [class [args]] -- start execution of application's main class threads [threadgroup] -- list threads
thread <thread id> -- set default thread
suspend [thread id(s)] -- suspend threads (default: all)
resume [thread id(s)] -- resume threads (default: all)
where [<thread id> | all] -- dump a thread's stack
wherei [<thread id> | all]-- dump a thread's stack, with pc info
up [n frames] -- move up a thread's stack
down [n frames] -- move down a thread's stack
kill <thread id> <expr> -- kill a thread with the given exception object
interrupt <thread id> -- interrupt a thread print <expr> -- print value of expression
dump <expr> -- print all object information
eval <expr> -- evaluate expression (same as print)
set <lvalue> = <expr> -- assign new value to field/variable/array element
locals -- print all local variables in current stack frame classes -- list currently known classes
class <class id> -- show details of named class
methods <class id> -- list a class's methods
fields <class id> -- list a class's fields threadgroups -- list threadgroups
threadgroup <name> -- set current threadgroup stop in <class id>.<method>[(argument_type,...)]
-- set a breakpoint in a method
stop at <class id>:<line> -- set a breakpoint at a line
clear <class id>.<method>[(argument_type,...)]
-- clear a breakpoint in a method
clear <class id>:<line> -- clear a breakpoint at a line
clear -- list breakpoints
catch [uncaught|caught|all] <class id>|<class pattern>
-- break when specified exception occurs
ignore [uncaught|caught|all] <class id>|<class pattern>
-- cancel 'catch' for the specified exception
watch [access|all] <class id>.<field name>
-- watch access/modifications to a field
unwatch [access|all] <class id>.<field name>
-- discontinue watching access/modifications to a field
trace [go] methods [thread]
-- trace method entries and exits.
-- All threads are suspended unless 'go' is specified
trace [go] method exit | exits [thread]
-- trace the current method's exit, or all methods' exits
-- All threads are suspended unless 'go' is specified
untrace [methods] -- stop tracing method entrys and/or exits
step -- execute current line
step up -- execute until the current method returns to its caller
stepi -- execute current instruction
next -- step one line (step OVER calls)
cont -- continue execution from breakpoint list [line number|method] -- print source code
use (or sourcepath) [source file path]
-- display or change the source path
exclude [<class pattern>, ... | "none"]
-- do not report step or method events for specified classes
classpath -- print classpath info from target VM monitor <command> -- execute command each time the program stops
monitor -- list monitors
unmonitor <monitor#> -- delete a monitor
read <filename> -- read and execute a command file lock <expr> -- print lock info for an object
threadlocks [thread id] -- print lock info for a thread pop -- pop the stack through and including the current frame
reenter -- same as pop, but current frame is reentered
redefine <class id> <class file name>
-- redefine the code for a class disablegc <expr> -- prevent garbage collection of an object
enablegc <expr> -- permit garbage collection of an object !! -- repeat last command
<n> <command> -- repeat command n times
# <command> -- discard (no-op)
help (or ?) -- list commands
version -- print version information
exit (or quit) -- exit debugger <class id>: a full class name with package qualifiers
<class pattern>: a class name with a leading or trailing wildcard ('*')
<thread id>: thread number as reported in the 'threads' command
<expr>: a Java(TM) Programming Language expression.
Most common syntax is supported. Startup commands can be placed in either "jdb.ini" or ".jdbrc"
in user.home or user.dir
> stop in HelloJDB.main
Deferring breakpoint HelloJDB.main.
It will be set after the class is loaded.
> run
Main class and arguments must be specified
> run HelloJDB
run HelloJDB
Set uncaught java.lang.Throwable
Set deferred uncaught java.lang.Throwable
>
VM Started: Set deferred breakpoint HelloJDB.main Breakpoint hit: "thread=main", HelloJDB.main(), line=3 bci=0
3 int i = 5; main[1] locals
Method arguments:
args = instance of java.lang.String[0] (id=403)
Local variables:
main[1] step
>
Step completed: "thread=main", HelloJDB.main(), line=4 bci=2
4 int j = 6; main[1] locals
Method arguments:
args = instance of java.lang.String[0] (id=403)
Local variables:
i = 5
main[1] step
>
Step completed: "thread=main", HelloJDB.main(), line=5 bci=5
5 int sum = add(i, j); main[1] locals
Method arguments:
args = instance of java.lang.String[0] (id=403)
Local variables:
i = 5
j = 6
main[1] print i
i = 5
main[1] print j
j = 6
main[1] list
1 public class HelloJDB {
2 public static void main(String...args) {
3 int i = 5;
4 int j = 6;
5 => int sum = add(i, j);
6 sum = 0;
7 for (i = 0; i < 100; i++) {
8 sum += i;
9 }
10 System.out.println(sum);
main[1] step
>
Step completed: "thread=main", HelloJDB.add(), line=13 bci=0
13 int sum = augend + addend; main[1] list
9 }
10 System.out.println(sum);
11 }
12 public static int add(int augend, int addend) {
13 => int sum = augend + addend;
14 return sum;
15 }
16 }
main[1] step up
>
Step completed: "thread=main", HelloJDB.main(), line=5 bci=10
5 int sum = add(i, j); main[1] list
1 public class HelloJDB {
2 public static void main(String...args) {
3 int i = 5;
4 int j = 6;
5 => int sum = add(i, j);
6 sum = 0;
7 for (i = 0; i < 100; i++) {
8 sum += i;
9 }
10 System.out.println(sum);
main[1] step
>
Step completed: "thread=main", HelloJDB.main(), line=6 bci=11
6 sum = 0; main[1] print sum
sum = 11
main[1] step
>
Step completed: "thread=main", HelloJDB.main(), line=7 bci=13
7 for (i = 0; i < 100; i++) { main[1] list
3 int i = 5;
4 int j = 6;
5 int sum = add(i, j);
6 sum = 0;
7 => for (i = 0; i < 100; i++) {
8 sum += i;
9 }
10 System.out.println(sum);
11 }
12 public static int add(int augend, int addend) {
main[1] stop at HelloJDB:10
Set breakpoint HelloJDB:10
main[1] list
3 int i = 5;
4 int j = 6;
5 int sum = add(i, j);
6 sum = 0;
7 => for (i = 0; i < 100; i++) {
8 sum += i;
9 }
10 System.out.println(sum);
11 }
12 public static int add(int augend, int addend) {
main[1] cont
>
Breakpoint hit: "thread=main", HelloJDB.main(), line=10 bci=31
10 System.out.println(sum); main[1] list
6 sum = 0;
7 for (i = 0; i < 100; i++) {
8 sum += i;
9 }
10 => System.out.println(sum);
11 }
12 public static int add(int augend, int addend) {
13 int sum = augend + addend;
14 return sum;
15 }
main[1] print sum
sum = 4950
main[1] exit
4950
[hadoop@hadoop-01 ~]$
参照:https://www.cnblogs.com/rocedu/p/6371262.html
java jdb 调试的更多相关文章
- 使用JDB调试Java程序
Java程序中有逻辑错误,就需要使用JDB来进行调试了.调试程序在IDE中很方便了,比如这篇博客介绍了在Intellj IDEA中调试Java程序的方法. 我们课程内容推荐在Linux环境下学习,有同 ...
- 解决JAVA单步调试键盘输入被JDB占用的问题
解决JAVA单步调试键盘输入被JDB占用的问题 问题来源: 在完成本周任务时,编写的代码中含有Scanner类,编译及运行过程均正确,但使用JDB单步调试时,运行到输入行无法在JDB内部输入变量值. ...
- jdb调试scala代码的简单介绍
在linux调试C/C++的代码需要通过gdb,调试java代码呢?那就需要用到jdb工具了.关于jdb的用法在网上大家都可以找到相应的文章,但是对scala进行调试的就比较少了.其实调试的大致流程都 ...
- jdb 调试
C:\Users\Reverse>adb shell am start -D -n lwf.lc.pncdd/lwf.lc.pncdd.MainC 查看内存情况: cat /proc/N/map ...
- 在Ubuntu中使用JDB调试代码
在Ubuntu中使用JDB调试代码 了解JDB JDB是JDK安装的一部分,是基于文本和命令行的调试工具,JDB是可以免费获取且平台独立的,缺点是只有命令行格式. JDB基础命令 在方法中设置断点st ...
- 迭代和JDB调试
迭代和JDB调试 题目要求 1 使用C(n,m)=C(n-1,m-1)+C(n-1,m)公式进行递归编程实现求组合数C(m,n)的功能 2 m,n 要通过命令行传入 3 提交测试运行截图(至少三张:正 ...
- 014-通过JDB调试,通过HSDB来查看HotSpot VM的运行时数据
一.JDB调试 在预发环境下进行debug时,时常因为工具和环境的限制,导致debug体验非常差,那么有什么方法能够简化我们进行debug的体验吗?JDB就是一种. JDB ...
- Java远程调试 java -Xdebug各参数说明
JAVA自身支持调试功能,并提供了一个简单的调试工具--JDB,类似于功能强大的GDB,JDB也是一个字符界面的 调试环境,并支持设置断点,支持线程线级的调试 JAVA的调试方法如下: 1.首先支持J ...
- JDB调试之小试牛刀
用JDK自带工具JDB调试示例程序HelloJDB(d:\jdb\HelloJDB) HelloJDB代码如下: public class HelloJDB { public static void ...
随机推荐
- 小白的CTF学习之路3——二进制数据基础与运算(下)
处理了二进制的整数运算,下面我们来进行令人绝望的浮点数运算 我们先来看一下float事列程序: #include<"stdio.sh"> int main() { fl ...
- Pycharm下面出现No R interpreter defined
安装Pycharm进行Python开发时,经常右下角提示No R interpreter defined,处理方式: 1.安装R,然后将R的路径添加到Pycharm中: 2.如果不需要进行R语言开发, ...
- 突破内网限制上网(ssh+polipo)
最近到客户这里来做项目,发现客户对网络的把控实在严格,很多网站都不能访问到,搜索到的技术文档也屏蔽了.突然想到了FQ工具的原理,刚好自己也有台服务器在外头,部署个Polipo代理然后用ssh隧道连接. ...
- struts2参数传递总结
需求1:登录页面填写表单,提交后进入action,action中能够获取填入的内容.[宏观分类:页面->action] 需求2:登录action从数据库校验完毕后,跳转至主页,主页显示当前登录的 ...
- 【MySql】启动/停止
一.启动 1.查看启动命令所在目录 macdeMacBook-Pro:~ mac$ ps -ef|grep mysql 2.进入命令目录 macdeMacBook-Pro:~ mac$ cd /usr ...
- ServiceStack.OrmLite 入门(一)
软件环境: Win7 x64 SP1 SQL Server 2008r2 Visual Studio 2017 Professional 目标:取出示例数据库 ReportServer 的表 Role ...
- IDEA打开maven项目dependencies红线
第一步:install报红的项目,从maven库下载需要的包,看看日志还缺哪些本地包,少了就去下,丢到库里.不缺包后,reimport一下一般就OK了,如果还是红的,重启一下就好了. 如果第一步还没好 ...
- 自定义导航栏 tabBarController 笔记
#import "LeeNavigationController.h" @interface LeeNavigationController () @end @implementa ...
- HDFS基本架构及概念介绍
简单介绍 l 设计思想 分而治之:将大文件.大批量文件,分布式存放在大量服务器上,以便于采取分而治之的方式对海量数据进行运算分析: l 在大数据系统中作用: 为各类分布式运算框架(如:mapred ...
- WPF的AutoCompleteBox控件
AutoCompleteBox怎么用,网上都能查得到,本文就不再赘述. 最近在用的时候,发现一个小BUG,当匹配数据的个数超过了Drop页面能够显式的数据个数时,如果此时一直按键盘上“向下的箭头”,你 ...