Nano Hash - криптовалюты, майнинг, программирование

Как исправить проблемы с отладкой Intellij?

Я пытаюсь переключиться на Intellij, но когда я загружаю свои проекты, отладчик, кажется, пропускает строки и не отслеживает фактический источник, когда я пытаюсь пройти. Я знаю, что это расплывчатая проблема, но кто-нибудь знает о проблемах, из-за которых Intellij неправильно связывает исходный код при отладке?


  • Не видел такого поведения; Вы пробовали полную очистку и восстановление? 10.11.2011
  • вы отслеживаете свой собственный источник или источники какой-то библиотеки? проблема может заключаться в нескольких версиях одной и той же библиотеки в пути к классам 10.11.2011
  • Подтвердили ли вы, что на самом деле это не ссылка на правильный источник, или это ссылка, но пропуск определенного кода, который вы пытаетесь отладить? Я спрашиваю, поскольку я испытал то же самое из-за того, что intellij не вошел в лямбда-функции. Некоторый рефакторинг кода упростил пошаговое выполнение. Однако, если вы не видите каких-либо отраженных изменений, не стесняйтесь игнорировать этот комментарий. 06.10.2019

Ответы:


1

Единственное, о чем я могу думать, это то, что текущие скомпилированные классы не соответствуют исходному коду, который вы используете для отладки. Что происходит в этих обстоятельствах, так это то, что IntelliJ (или любая другая IDE) получает отладочную информацию от классов, касающуюся таких вещей, как номера строк, а затем сопоставляет ее с текущим источником, который вы просматриваете, чтобы показать вам, какой код выполняется. .

Если код устарел или версии (исходный код и скомпилированный класс) каким-либо образом не совпадают, может случиться так, что отлаживаемый код предоставляет IDE информацию для отображения определенной строки, но эта информация неверна, предоставляя текущий источник кода, что может привести к отлаженным "прыгающим" строкам или просто остановке в местах, которые не имеют особого смысла.

Вы переделали свой проект? Являются ли эти источники из классов в банке, и вы уверены, что версии совпадают?

Надеюсь, поможет!

09.11.2011
  • Я согласен, это, вероятно, проблема - я бы попытался установить флажок make в конфигурации запуска (раздел «Перед запуском»), используемый для отладки 10.11.2011
  • @pcalcao Да, вы правы, когда-то у меня были похожие проблемы, когда отладчик жаловался, что источник не найден. Это похоже на запуск отладчика и последующее изменение кода при возникновении несоответствия. Я думаю как ребята предложили построить проект и это решит ее. 10.11.2011

  • 2

    Я получил ту же проблему. Вы можете выполнить следующие шаги:

    1. Удалить папку сборки/цели
    2. Закрыть проект из файла и
    3. Откройте проект из последних проектов.
    4. Отладить снова. Теперь отладчик попадет в ваше местоположение указателя отладки

    Спасибо :)

    20.07.2020

    3

    Я боролся с аналогичной проблемой с проектом на основе Gradle. Я пробовал каждую комбинацию File -> Synchronize, Build -> Clean project, gradle clean build и т. д. Удалил кеш .gradle. Декомпилировал файл .class, и он выглядел как правильная версия.

    В конце концов, я просто удалил все каталоги build и out в проекте, попытался снова запустить тест и, наконец, выбрал текущую исходную версию.

    Я помню, что в Eclipse мне всегда приходилось иметь дело с Eclipse Dance. Я думаю, это версия IntelliJ.

    ОБНОВЛЕНИЕ: я обнаружил, что это случайно повторяющаяся проблема, поэтому я создал псевдоним для удаления, если вы используете эквивалент Bash. Просто установите псевдоним в .bashrc или .zshrc и запустите deletebuilds в каталоге вашего проекта:

    alias deletebuilds='find . | egrep "\.class$" | sed -e "s/\/build\/.*/\/build\//" | sort | uniq | xargs rm -rf'
    

    Это предполагает, что ваши скомпилированные файлы классов находятся в каталоге build. Измените часть sed, если они собираются куда-то еще.

    03.01.2019

    4

    Вы можете настроить IntelliJ для использования java-компилятора Eclipse, который может решить вашу проблему. Из приведенной ниже ссылки:

    https://youtrack.jetbrains.com/issue/IDEA-8021

    " Это не первый отчет об известной старой проблеме javac: для некоторых структур try/catch и if/else он генерирует несколько инструкций байт-кода, которые ошибочно связаны с номерами строк. номер строки и решает остановиться на ней (поскольку номер строки изменился).Javac не должен был назначать этой инструкции другой номер строки.

    Вы видите другое поведение в Eclipse только потому, что он использует свой собственный компилятор, который свободен от этой проблемы. Вы увидите точно такое же поведение, если настроите Eclipse на использование javac для компиляции. Кроме того, вы можете настроить IDEA на использование компилятора eclipse для обхода проблемы (применимо только к текущей версии EAP — сборки 5xxx — которая имеет интеграцию с компилятором eclipse)».

    Также см. этот вопрос о настройке Maven для использования компилятора Eclipse:

    Использование компилятора Java Eclipse (ecj) в сборках maven

    12.07.2016

    5

    Эта проблема может быть похожа на эту проблему https://intellij-support.jetbrains.com/hc/en-us/community/posts/206170749-IDEA-14-1-1-debugger-using-decompiled-кодвместоисходногокода.

    В Project Structure (Ctrl+Alt+Shift+S) > Modules, если вы добавили какой-либо jar отлаживаемого модуля в зависимости любого другого модуля, Intellij может использовать декомпилированную версию этого jar вместо последнего исходного кода, поэтому вместо этого выполнение будет приостановлено в точке останова в декомпилированной версии. Эта проблема может возникнуть, даже если отлаживаемый модуль вызывается из других модулей, не зависящих от отлаживаемого.

    Чтобы решить эту проблему, просто удалите jar отлаживаемого модуля из зависимостей всех модулей в структуре проекта. Если вы не знаете, какие модули имеют отлаживаемый jar-модуль в качестве зависимостей, вы можете использовать некоторые инструменты (например, Sublime Text, bash,...) для поиска имени модуля, которое хранится в файле Intellij *.iml в каждом модуле. После удаления вам может понадобиться Sync the project и сделать Maven > Reimport.

    18.03.2019
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

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

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..