Как вы отлаживаете Java-апплеты? - PullRequest
55 голосов
/ 15 мая 2009

В настоящее время единственная информация, которую я имею, - это сообщение об ошибке в одну строку в строке состояния браузера.

Вы знаете, как я могу получить, например, трассировку стека?

Ответы [ 7 ]

53 голосов
/ 01 апреля 2010

Помимо очевидного использования консоли Java и средства просмотра апплетов, начиная с Java 6, обновление 7, вы можете использовать VisualVM , который поставляется с JDK (JDK_HOME / bin / visualvm). Он позволяет вам просматривать трассировки стека каждого потока и даже просматривать все экземпляры объекта.

AppletViewer очень удобен, вы можете выполнить «Запуск от имени / Java-апплет» из Eclipse для запуска или «Отладка как / Java-апплет» для отладки классов вашего апплета.

Однако иногда для отладки некоторых вещей, связанных с безопасностью, среда плагина браузера слишком сильно отличается от appletviewer. Вот что вы можете сделать для эффективной отладки апплетов в браузере:

1) Получить отладочную информацию для двоичных файлов

Резервное копирование файлов .jar из JRE_HOME / lib

(Скачать и) Установить JDK для той же версии, что и ваша JRE.

Скопируйте файлы .jar из JDK_HOME / jre / lib в JRE_HOME / lib

Файлы внутри JDK были скомпилированы с включенной отладочной информацией (информация о номере строки исходного кода, именами переменных и т. Д.), И файлы JRE не содержат этой информации.

Без этого вы не сможете осмысленно войти в код основного класса в своем отладчике.

2) Включить отладку для подключаемого модуля Java

Перейти к панели управления Java / Джава / Настройки времени выполнения Java / Посмотреть / Пользователь / Параметры времени выполнения

И добавьте опции для включения отладки. Примерно так:

-Djava.compiler=NONE -Xnoagent -Xdebug -Xrunjdwp:transport=dt_socket,address=2502,server=y,suspend=n

Интересные варианты порт (здесь используется 2502, вы можете использовать практически любой свободный порт, просто запишите его на потом) и приостановить - если вам нужно отладить запуск апплета, загрузку классов и т. д., установите для этого «y». Таким образом, при доступе к странице апплета браузер будет зависать, поскольку JVM немедленно приостанавливается в ожидании подключения отладчика.

3) Используйте вашу любимую среду IDE для удаленной отладки подключаемого модуля Java

Например, в Eclipse выберите Run / Debug Configurations ... / Remote Java Application

Нажмите на кнопку «Новый».

Убедитесь, что тип подключения «Socket Attach», выберите localhost в качестве хоста, если ваш браузер локальный, и порт, который вы выбрали ранее (2502 в примере).

Возможно, вам придется включить src.zip в JDK на вкладке источников, чтобы иметь доступ к источникам базового класса Java.

Сохраните конфигурацию, и как только ваш браузер запустит плагин (с приостановленной или нет JVM), запустите удаленный отладчик, чтобы подключиться к плагину JVM, с открытым проектом с источниками вашего апплета.

26 голосов
/ 15 мая 2009

Эта статья немного устарела , но все еще актуальна (включая раздел «Как отлаживать апплеты в плагине Java»).

Редактировать: возможно, лучший способ получить трассировку стека - использовать консоль плагина Java . Если вы нажмете «t» в этом окне, вы увидите следующее:

Распечатывает все существующие темы групп. Первая показанная группа - Группа главный. ac обозначает активный счет; Это общее количество активных потоков в группе потока и его дочернем потоке групп. АГК выступает за активную группу рассчитывать; это число активных дочерние группы потоков группы потоков. pri означает приоритет; это приоритет группы потоков. Следующий Основная группа, другие группы потоков будут показываться как группа, где имя URL-адрес, связанный с апплетом. Индивидуальные списки тем будут показать имя потока, поток приоритет, живой, если поток жив или уничтожен, если поток находится в процесс уничтожения и демон если поток является потоком демона.

Другая команда, которую я чаще всего использовал на этой консоли, это уровень трассировки от 0-5:

Устанавливает параметры уровня трассировки, как описано в следующем разделе, Отслеживание и ведение журнала.

На этой странице вы увидите, что уровни выглядят так:

  • 0 - выкл.
  • 1 - базовый
  • 2 - сеть, кэш и базовые
  • 3 - безопасность, сеть и основные
  • 4 - расширение, безопасность, сеть и основные
  • 5 - LiveConnect, расширение, безопасность, сеть, временные и базовые

Эти инструменты могут быть весьма полезны, поскольку вы пытаетесь разгадать, что в мире попало в голову ваших апплетов. Я знаю, что они работали на меня.

3 голосов
/ 15 мая 2009

Следы стека от необработанных исключений появятся на консоли. Это можно включить из панели управления Java («Дополнительно»> «Консоль Java»> «Показать консоль»), или в некоторых браузерах есть различные опции или плагины для включения.

Вы можете прикрепить отладчик к запущенному процессу подключаемого модуля.

Возможно, лучший способ - это вообще не отлаживать. Пишите тесты. Напишите код, который не связан с ненужными предположениями - например, вы работаете как апплет. К сожалению, большинство примеров кода GUI / апплета написано очень плохо.

3 голосов
/ 15 мая 2009

Просмотрщик апплетов поддерживает параметры отладки.

1 голос
/ 10 июня 2014

Для меня наиболее важным действием для отладки апплета в eclipse является установка в панели управления java (вкладка java) правильных двоичных файлов, которые имеют символы отладки. Только JRE, включенные в JDK, имеют эти символы. Поэтому для отладки апплета в панели управления java, вкладке java, нажмите кнопку просмотра, после нахождения нужного jre в папке jdk, например для меня "C: \ Programmi \ Java \ jdk1.7.0_03 \ jre", и поставьте галочку включенной только для этой записи. Для меня это чистый способ сделать то, что говорит Сами Койву.

1 голос
/ 24 сентября 2013

Я столкнулся с проблемой, связанной с удаленной отладкой апплета, каждый раз, когда я пытался подключиться из eclipse, он выдает ошибку Connection отказывается, моя версия jre была 64-битной, а 32-битная затмение, когда я заменял 32-битную jre, это работало для меня. Также, если мы установили как 32-битные, так и 64-битные версии jre, IE по умолчанию использует 64-битные jre для апплетов, Chrome и FF могут использовать 32-битные версии jre.

1 голос
/ 15 мая 2009

Неизвестные исключения отправляются на консоль. Вы также можете использовать System.out для записи своих собственных сообщений в консоль. Чтобы просмотреть результаты, вам нужно открыть консоль, щелкнув правой кнопкой мыши значок Java в системном окне и открыв консоль (обратите внимание, что это отличается от виртуальной машины Microsoft).

Для правильной отладки апплетов вы можете настроить Eclipse для отладки апплетов. Щелкните правой кнопкой мыши исходный файл апплета и выберите «Отладка как апплет». (Если у вас есть параметры для апплета, вам нужно это настроить.) Затем вы можете пошагово пройти по коду апплета, как отлаживая любой другой код Java.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...