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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值