Як змусити IntelliJ вступати лише у мій вихідний код?


76

У мене є проект Spring MVC, який я намагаюся налагодити за допомогою IntelliJ.

Якщо я встановлюю точку зупинки в коді контролера, налагодження зупиняється у відповідному місці. Цей рядок містить більше мого власного коду в іншому файлі. Я хотів би мати можливість зайти в код. Якщо я "вступлю" відразу після встановлення точки зупинку, це вступає у код коду фреймворка AOP Spring.

введіть тут опис зображення

Якщо я одразу запускаю ту саму точку зупинки та "розумний крок", це ставить мене на рядок -1 вихідного файлу (це видно на графіку вище). Що означає цей рядок -1? Якщо я знову роблю "розумний крок", я опиняюся на лінії після моєї початкової точки зупинки, але ніколи не потрапляв всередину методу, до якого я хотів вступити.

Я спробував помістити пакет Spring AOP у налаштування налагоджувача Не входити в класи . Однак мені також довелося вкладати класи транзакцій, а також кілька інших. Врешті-решт, я включив всю Весну до списку ... і SLF4J та деякі драйвери JDBC.

Як я можу просто змусити IntelliJ зупинятись лише у вихідному коді мого проекту, якщо я не використовую щось на зразок «силового кроку»?


6
у Do not step into classesналаштуванні ви можете оголосити шаблон за допомогою символів підстановки. Це може допомогти швидко виключити пакунки типу org.*і com.*, якщо припустити, що ваш не починається з них. Для вас було б ідеальним рішенням, щоб ви могли використовувати заперечення ( !) у цих шаблонах - я б запропонував надіслати це як запит функції.
Міхал Рибак

Існує відповідний запит на функцію для IntelliJ IDEA , проголосуйте. - IDEA-54807 Дозволити налаштуванням проекту мати свій власний крок налагодження та додати [Тільки крок у класи] для підвищення продуктивності
CrazyCoder

Відповіді:


48

На даний момент не існує загальної опції націлювання лише на користувацький код (наприклад , «Просто мій код» Visual Studio ).

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

Цього можна досягти в Налаштуваннях / Налаштуваннях , у параметрах Налагоджувач / Крок .


28

Весна AOP може бути серед найгірших порушників.

ОП припустив, що вони це вже зробили, але ось як можна відключити перехід у вказані класи (IntelliJ ULTIMATE 2018.2):

File-> Settings...-> Build, Execution, Deployment-> Debugger->Stepping

... Do not step into the classes-> Add Pattern->Enter the filter pattern:

... ... org.springframework.aop.*

Зверніть увагу, що ви можете використовувати узагальнюючі символи, щоб вимкнути цілі простори імен - так, наприклад, припускаючи, що простір імен вашої організації починається з com, ви можете пройти більшу частину шляху за допомогою чорного списку org.*.


2
бездоганна відповідь!
Gaurav

Автентична відповідь!
DevWithSigns

4

IntelliJ ULTIMATE 2018.3 Використання File-> Settings-> пошук "Крок" таким чином: введіть тут опис зображення


3

Інший спосіб в "Ultimate 2019.1" (може бути також у попередніх версіях):

Коли ви вже зараз налагоджуєте, ви можете клацнути правою кнопкою миші на класі у поданні "Налагоджувач" - "Рамки". Потім ви можете вибрати "Додати кроковий фільтр ..." і додати для цього класу новий фільтр кроків. Звичайно, тут ви також можете змінити новий ступінчастий фільтр, використовуючи затискач місця "*" і так далі ...


Я бачу цю опцію у версії спільноти, але не можу зрозуміти, що вона змінює - клас, який я натиснув, все ще відображається у списку кадрів.
Лінія

0

Після згаданих вище змін зупиніть свою програму та перезапустіть знову в режим налагодження, щоб набути чинності.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.