Spec-Zone .ru
спецификации, руководства, описания, API
|
jdb [ options ] [ class ] [ arguments ]
options
class
arguments
main()
метод class
.Отладчик Java, jdb, является простым отладчиком командной строки для классов Java. Это - демонстрация Архитектуры Отладчика Платформы Java, которая обеспечивает контроль и отладку локальной или удаленной виртуальной машины Java.
Есть много способов запустить jdb сеанс. Наиболее часто используемый путь состоит в том, чтобы иметь запуск jdb новая виртуальная машина Java (VM) с основным классом приложения, которое будет отлажено. Это делается, заменяя командой jdb для java в командной строке. Например, если основным классом Вашего приложения является MyClass, Вы используете следующую команду, чтобы отладить это под JDB:
C:\> jdb MyClass
Когда запущено этот путь, jdb вызывает второй Java VM с любыми указанными параметрами, загружает указанный класс, и останавливает VM прежде, чем выполнить первую инструкцию того класса.
Другой способ использовать jdb, присоединяя это к Java VM, который уже работает. VM, который должен быть отлажен с jdb, должен быть запущен со следующих опций. Эти опции загружают незавершенные библиотеки отладки и определяют вид соединения, которое будет сделано.
-agentlib:jdwp=transport=dt_shmem,server=y,suspend=n
Например, следующая команда запустит приложение MyClass, и позволит jdb соединяться с этим в более позднее время.
C:\> java -agentlib:jdwp=transport=dt_shmem,address=jdbconn,server=y,suspend=n MyClassМожно тогда присоединить jdb к VM со следующим commmand:
C:\> jdb -attach jdbconnОтметьте, что "MyClass" не определяется в jdb командной строке в этом случае, потому что jdb соединяется с существующим VM вместо того, чтобы запустить новый.
Есть много других способов соединить отладчик с VM, и все они поддерживаются jdb. У Архитектуры Отладчика Платформы Java есть дополнительная документация по этим опциям соединения. Для получения информации о запуске J2SE 1.4.2 или рано VM для использования с jdb видят
ОТМЕТЬТЕ: Чтобы вывести на экран локальные переменные, содержание класса, должно быть, было скомпилировано с javac -g опция.
print поддерживает много простых выражений Java включая тех с вызовами метода, например:
Команда dump поддерживает тот же самый набор выражений как команда print.
4. (java.lang.Thread)0x1 main runningВ этом примере список веток 4, поток является экземпляром java.lang. Поток, имя потока является "основным", и это является в настоящий момент рабочим,
where
без параметров выводит стек текущего потока. where all
выводит стек всех потоков в группе текущего потока. where
threadindex выводит стек указанного потока. Если текущий поток приостанавливается (или через событие, такое как точка останова или посредством команды suspend), локальные переменные и поля могут быть выведены на экран с командами print И dump. Выбор команд up И down, какой стековый фрейм является текущим.
Точки останова могут быть установлены в jdb в номерах строки или в первой инструкции метода, например:
Если метод перегружается, следует также определить его типы параметра так, чтобы надлежащий метод мог быть выбран для точки останова. Например, "MyClass.myMethod(int,java.lang.String)", или "MyClass.myMethod()".
Команда clear удаляет точки останова, используя синтаксис в качестве в " clear MyClass:45". Используя clear или команду без параметра выводит на экран список всех точек останова в настоящий момент набор. Команда cont продолжает выполнение.
Команды step совершенствуют выполнение к следующей строке, является ли это в текущем стековом фрейме или вызванном методе. Команда next совершенствует выполнение к следующей строке в текущем стековом фрейме.
Когда исключение происходит, для которого нет оператора выгоды нигде в стеке вызовов потока броска, VM обычно печатает трассировку исключения и выходы. Работая под jdb, однако, управление возвращается к jdb при незаконном броске. Можно тогда использовать jdb, чтобы диагностировать причину исключения.
Используйте команду catch, чтобы заставить отлаженное приложение останавливаться в других выданных исключениях, например: "catch java.io.FileNotFoundException" или "catch mypackage.BigTroubleException. Любое исключение, которое является экземпляром specifield класса (или подкласса) остановит приложение в точке, где это бросается.
Команда ignore инвертирует эффект предыдущей команды catch.
ОТМЕТЬТЕ: команда ignore не заставляет отлаженный VM игнорировать определенные исключения, только отладчик.
Когда Вы используете jdb вместо средства запуска приложения Java на командной строке, jdb принимает многие из тех же самых опций как команда java, включая -D, -classpath, и -X<option>.
Следующие дополнительные опции принимаются jdb:
Другие опции поддерживаются для альтернативных механизмов для того, чтобы соединить отладчик и VM, который он должен отладить. У Архитектуры Отладчика Платформы Java есть дополнительная документация по этим альтернативам соединения.
javac, java, javah, javap, javadoc.