web-dev-qa-db-ja.com

IntelliJにソースコードへのステップインのみを強制する方法は?

IntelliJを使用してデバッグしようとしているSpring MVCプロジェクトがあります。

コントローラコードにブレークポイントを設定すると、デバッグは適切な場所で停止します。その特定の行には、別のBeanにさらに多くの独自のコードがあります。コードにステップインできるようになりたい。ブレークポイントリガーの直後に「ステップイン」すると、SpringのAOPフレームワークコードにステップインします。

enter image description here

同じブレークポイントをトリガーし、すぐに「スマートステップイン」すると、ソースファイルの行-1に配置されます(上の図で見られます)。この行-1は何を意味しますか?再び「スマートステップイン」を行うと、元のブレークポイントの後の行になりますが、ステップインしたいメソッド内に配置されたことはありません。

Spring AOPパッケージをデバッガ設定に入れようとしましたクラスにステップインしないでください。しかし、トランザクションクラスや他のいくつかのクラスを追加する必要もありました。最後に、Springのすべてをリストに追加し、SLF4JといくつかのJDBCドライバーを追加しました。

「強制ステップイン」のようなものを使用しない限り、IntelliJをプロジェクトのソースコードのみで停止させるにはどうすればよいですか。

59
dbrown0708

現在、ユーザーコードのみを対象とする全体的なオプションはありません( Visual Studioの 'Just My Code' など)。

同じ動作をする最善の方法は、「ステップイン」されない特定のコードクラスまたはパッケージ(ワイルドカードを介してクラスパッケージのフィルターパターンを設定することが可能)を除外することです。

これは、Settings/PreferencesDebugger/Steppingオプションで実現できます。

39
acoelhosantos

Springの [〜#〜] aop [〜#〜] は、最悪の犯罪者である可能性があります。

OPは既にこれを行っていることを示唆しましたが、指定されたクラスへのステップインを無効にする方法は次のとおりです(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.*

16
nobar

IntelliJ ULTIMATE 2018.3 Fileを使用-> Settings->次のように「ステップ」を検索: enter image description here

3
huoxudong125

「Ultimate 2019.1」の別の方法(以前のバージョンでも可能):

今デバッグしているとき、ビュー「Debugger」-「Frames」でクラスを右クリックできます。次に、「ステップフィルターを追加...」を選択して、そのクラスに新しいステップフィルターを追加します。もちろん、プレースホルダー「*」などを使用して、新しいステップフィルターを変更することもできます...

2
Steffen