where options include:
-help print out this message and exit
-sourcepath <directories separated by ";">
directories in which to look for source files
-attach <address>
attach to a running VM at the specified address using standard connector
-listen <address>
wait for a running VM to connect at the specified address using standard connector
-listenany
wait for a running VM to connect at any available address using standard connector
-launch
launch VM immediately instead of waiting for 'run' command
-connect <connector-name>:<name1>=<value1>,...
connect to target VM using named connector with listed argument values
-dbgtrace [flags] print info for debugging jdb
-tclient run the application in the Hotspot(tm) Performance Engine (Client)
-tserver run the application in the Hotspot(tm) Performance Engine (Server)
options forwarded to debuggee process:
-v -verbose[:class|gc|jni]
turn on verbose mode
-D<name>=<value> set a system property
-classpath <directories separated by ";">
list directories in which to look for classes
-X<option> non-standard target VM option
<class> is the name of the class to begin debugging
<arguments> are the arguments passed to the main() method of <class>
For command help type 'help' at jdb prompt
** command list **
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> <expr> -- kill a thread with the given exception object
interrupt <thread> -- 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] <exception-class id>
-- break when specified exception occurs
ignore [uncaught|caught|all] <exception-class id>
-- 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 methods [thread] -- trace method entry and exit
untrace methods [thread] -- stop tracing method entry and exit
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 id ... | "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
help (or ?) -- list commands
version -- print version information
exit (or quit) -- exit debugger
<class id> or <exception-class id>: full class name with package
qualifiers or a pattern with a leading or trailing wildcard ('*')
NOTE: any wildcard pattern will be replaced by at most one full class
name matching the pattern.
<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
设好classpath,运行:
jdb **.**.Class
提示符为>:
stop at <class id>:<line> //类名:行号,运行到此处停止
run //开始运行
停止后:
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
看变量值,改变量值.
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到下一断点