Monthly Archives: Июль 2015

Удаленный дебаг в IntelliJ IDEA (на примере JBoss EAP)

Использование локальной или удаленной отладки может очень помочь и сэкономить время.

По умолчанию удаленная отладка в JBoss отключена, для ее активации нужно внести изменения в конфигурационный файл %EAP_HOME%/bin/standalone.conf.

  1. Найдите и раскомментируйте следующую строку:
    JAVA_OPTS="$JAVA_OPTS -agentlib:jdwp=transport=dt_socket,address=8787,server=y,suspend=n"
    

    Видно, что мы задействовали порт 8787.

  2. Перегрузите JBoss
  3. Осталось настроить IDEA
    Зайдите в меню Run и выберите пункт Edit configurations…:
    remote_debug_1

    В открывшемся окне Run/Debug configurations выберите пункт Remote:
    remote_debug_2

    Придумайте название для данной конфигурации (поле Name), пропишите адрес(Host) и порт(Port) JBoss’а, на котором включена удаленная отладка. Нажмите OK:
    remote_debug_3
    В качестве адреса можно указать localhost.

  4. Теперь попробуем подключаться к работающему JBoss’у, для этого выберите в списке созданную конфигурацию и нажмите «зеленого жучка», как на картинке:
    remote_debug_4
    При успешном подключении в консоли IDEA вы увидите следующее сообщение:

    Connected to the target VM, address: '10.1.0.50:8787', transport: 'socket'
    
  5. Далее мы можем расставить необходимые breakpoint’ы, где необходимо приостановить код и просмотреть содержимое переменных:
    remote_debug_5
    Вот так в IntelliJ IDEA выглядит отображение содержимого переменных — это очень удобно:
    remote_debug_6

  6. Для навигации по исполняемому коду вам помогут следующие кнопки:
    remote_debug_9
    Одна из самых полезных — Step Over(перешагнуть), вызывается нажатием функциональной клавиши F8.

  7. Также IntelliJ IDEA предоставляет некоторые возможности по горячей замене классов (Hot Swap). Например, вы можете что-то изменить внутри метода, нажать на кнопку Make Project, и все изменные классы будут перегружены:
    remote_debug_7
    Если изменения несовместимы с горячей заменой, то вам будет сообщено о невозможности замены классов.

  8. И последнее — для выхода из режима отладки нажмите кнопку Stop:
    remote_debug_8
    В консоли появиться сообщение об отсоединении от сервера:

    Disconnected from the target VM, address: '10.1.0.50:8787', transport: 'socket