Как установить точку останова в Eclipse в сторонней библиотеки?
Я получаю исключение NullPointerException в классе из сторонней библиотеки. Теперь я хотел бы отладить все это, и мне нужно было бы знать, из какого объекта хранится класс. Но мне кажется, что я не могу установить точку останова в классе от третьей стороны.
кто-нибудь знает выход из моей проблемы? Конечно, я использую Eclipse в качестве интегрированной среды разработки.
обновление: библиотека с открытым исходным кодом.
6 ответов:
для этого загрузите исходный код и распакуйте его где-нибудь в вашей системе. Нажмите Кнопку "Файл"->"Создать" - >"Проект Java". В следующем диалоговом окне введите имя проекта и выберите "Создать проект из существующего источника". Перейдите в корневое расположение открытого исходного кода библиотека.
предположим, что все дополнительные библиотеки, которые требуются для проекта и такие включены в проект, который вы загрузили, Eclipse будет выяснить все и установить путь сборки для вас.
вам нужно будет удалить jar с открытым исходным кодом из пути сборки вашего проекта и добавить этот новый проект в путь сборки вашего проекта.
теперь, вы можете просто рассматривать это как свой код, и отлаживать на волю.
это становится по крайней мере пара проблем с другими подходами:
вы можете "прикрепить источник" к файлу jar, но если файл jar был скомпилирован без отладочной информации, это все равно не будет работать. Если jar-файл был скомпилирован с отладочной информацией (
lines,source,vars...вижу http://java.sun.com/j2se/1.3/docs/tooldocs/win32/javac.html и ).вы можете добавить "точку останова исключения", чтобы увидеть, когда NullPointerException поднял, но это общее исключение, и вполне может быть поднят и иметь дело со многими (сотнями?) раз до того, что вы ищете. Кроме того, без исходного источника вы не сможете действительно увидеть много чего о коде, который бросает исключение NullPointerException - вероятность того, что вы сможете выяснить, что не так, довольно низкая.
вы можете легко установить точки останова метода в сторонних библиотеках, не имея источника. Просто откройте класс (вы получите представление "у меня нет источника"). Откройте контур, щелкните правой кнопкой мыши на методе, который вы хотите, и нажмите на
Toggle Method Breakpointдля создания точки останова метода.
вы также можете установить точки останова на конкретных исключений. С точки зрения отладки есть кнопка "Добавить точку останова исключения Java", и там вы можете добавить"NullPointerException". Затем отладчик приостановит выполнение, как только возникнет такое исключение.
нормально, вы должны быть в состоянии установить точку останова. Особенно если сторонняя библиотека с открытым исходным кодом. Но если ваша сторонняя библиотека от коммерческого поставщика, они, возможно, скомпилировали источник с отключенным флагом отладки. Это сделает невозможным для вас, чтобы отладить его. Ваш поставщик мог сделать это как часть процесса запутывания, чтобы сделать невозможным обратное проектирование библиотеки, или просто потому, что конечные скомпилированные классы будут меньше.
просто прикрепите источник (или используйте что-то, что автоматически прикрепляет исходную банку), а затем установите точку останова обычным способом, дважды щелкнув слева от интересующей линии.
чтобы сделать эту работу с материализованным веб-приложением maven, мне нужно было сделать три вещи.
1) Создайте новый проект eclipse с исходным кодом стороннего jar.
2) Удалите ссылку на банку из pom.зависимости XML.
3) Добавьте новый проект eclipse в сборку развертывания в свойствах проекта.
4) Добавьте новый проект eclipse в свойства проекта - > Путь сборки Java -> проекты существующего проекта, который ссылки на сторонний проект.
Если 3-й проект был добавлен в ваш репозиторий maven правильно, с источниками, maven автоматически загрузит соответствующий исходный код и позволит вам добавлять точки останова без необходимости выполнять какие-либо из приведенных выше шагов; однако я узнал, что вы не всегда можете рассчитывать на это.
Comments