[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 调试的更多相关文章

  1. 使用JDB调试Java程序

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

  2. 解决JAVA单步调试键盘输入被JDB占用的问题

    解决JAVA单步调试键盘输入被JDB占用的问题 问题来源: 在完成本周任务时,编写的代码中含有Scanner类,编译及运行过程均正确,但使用JDB单步调试时,运行到输入行无法在JDB内部输入变量值. ...

  3. jdb调试scala代码的简单介绍

    在linux调试C/C++的代码需要通过gdb,调试java代码呢?那就需要用到jdb工具了.关于jdb的用法在网上大家都可以找到相应的文章,但是对scala进行调试的就比较少了.其实调试的大致流程都 ...

  4. jdb 调试

    C:\Users\Reverse>adb shell am start -D -n lwf.lc.pncdd/lwf.lc.pncdd.MainC 查看内存情况: cat /proc/N/map ...

  5. 在Ubuntu中使用JDB调试代码

    在Ubuntu中使用JDB调试代码 了解JDB JDB是JDK安装的一部分,是基于文本和命令行的调试工具,JDB是可以免费获取且平台独立的,缺点是只有命令行格式. JDB基础命令 在方法中设置断点st ...

  6. 迭代和JDB调试

    迭代和JDB调试 题目要求 1 使用C(n,m)=C(n-1,m-1)+C(n-1,m)公式进行递归编程实现求组合数C(m,n)的功能 2 m,n 要通过命令行传入 3 提交测试运行截图(至少三张:正 ...

  7. 014-通过JDB调试,通过HSDB来查看HotSpot VM的运行时数据

    一.JDB调试        在预发环境下进行debug时,时常因为工具和环境的限制,导致debug体验非常差,那么有什么方法能够简化我们进行debug的体验吗?JDB就是一种.        JDB ...

  8. Java远程调试 java -Xdebug各参数说明

    JAVA自身支持调试功能,并提供了一个简单的调试工具--JDB,类似于功能强大的GDB,JDB也是一个字符界面的 调试环境,并支持设置断点,支持线程线级的调试 JAVA的调试方法如下: 1.首先支持J ...

  9. JDB调试之小试牛刀

    用JDK自带工具JDB调试示例程序HelloJDB(d:\jdb\HelloJDB) HelloJDB代码如下: public class HelloJDB { public static void ...

随机推荐

  1. requests+正则爬取猫眼电影前100

    最近复习功课,日常码农生活. import requests from requests.exceptions import RequestException import re import jso ...

  2. 文件上传的三种模式-Java

    文件上传的三种方式-Java 前言:因自己负责的项目(jetty内嵌启动的SpringMvc)中需要实现文件上传,而自己对java文件上传这一块未接触过,且对 Http 协议较模糊,故这次采用渐进的方 ...

  3. vue监听滚动事件-元素固定位置显示

    1.监听滚动事件 用VUE写一个在控制台打印当前的scrollTop用来测试是否执行: mounted () { window.addEventListener('scroll', this.hand ...

  4. require()  module.export    Object.keys()

    import API from"../../api/api.js";   var data = require('../../utils/data.js').songs;   // ...

  5. SqlServer 连接 相关。

    sqlserver数据库连接池是一个客户端的东西.和sql server服务器无关. 各种provider默认的连接池大小不同. 比如:Ado.NET 中sqlserver 连接池默认的值是100. ...

  6. django 图书管理系统

    一.图书管理系统 单表的增删改查 1.创建项目 2.注释掉中间件 就可以提交post 请求 3.配置静态文件 并手动创建static 文件夹存放静态文件  二.具体的数据库配置 1.创建数据库  2. ...

  7. why microsoft named their cloud service Azure?

    best guess I can personally make is that because Azure literally means “bright blue color of the clo ...

  8. SQL Server 2008 安装(lpt亲测)

    SQL Server安装真的遇到好多问题啊!!  于是就决定写个备忘,方便自己也方便别人. 1.下载安装包 2.打开安装包,就遇到了restart computer 那里failed的错误,导致无法继 ...

  9. Icehouse 创建Instance代码分析

    1. nova-api接收到request 在/etc/nova/api-paste.ini中,是这样配置nova v2的 [app:osapi_compute_app_v2] paste.app_f ...

  10. 子弹短信光鲜的背后:网易云信首席架构师分享亿级IM平台的技术实践

    本文原文内容来自InfoQ的技术分享,本次有修订.勘误和加工,感谢原作者的分享. 1.前言 自从2018年8月20日子弹短信在锤子发布会露面之后(详见<老罗最新发布了“子弹短信”这款IM,主打熟 ...