41

IntelliJ IDEA でコードをデバッグできません。デバッグ モードがアクティブで実行中ですが、有効で停止可能なブレークポイントを表す "v" がブレークポイントでチェックされていない場合。

画像を参照してください。

ここに画像の説明を入力

私は本当に答えをウェブで検索します。私はどうしたらいいですか?

4

12 に答える 12

8

Grails 2.3 以降、いくつかの Grails コマンド (例: )の分岐実行導入されました。IntelliJ IDEA から Grails アプリケーションをデバッグするだけの場合、プロセスはデバッグ オプションをオンにして開始されます。IDEA コンソールの出力は次のようになります。run-apptest-appGrailsStarter

/usr/lib/jvm/default-java/bin/java -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:59935,suspend=y,server=n [...] /opt/idea-IU-133.330/lib/idea_rt.jar org.codehaus.groovy.grails.cli.support.GrailsStarter [...] run-app Connected to the target VM, address: '127.0.0.1:59935', transport: 'socket'

アプリケーション自体は、 という名前の別のプロセスで開始されますForkedTomcatServer。これは、コードが実行される場所であり、デバッガーが実際に接続する場所です。

これを行うには、 の構成で設定debug: trueします。ここで IDEA から Grails を実行するだけで (デバッグは行わないでください)、アプリケーションが HTTP リクエストを処理する準備が整うと、コンソールに次の行が表示されます。BuildConfig.groovyrungrails.project.fork

Listening for transport dt_socket at address: 5005

これは、別のリモート実行構成を送信する場所です。リモート デバッガーが接続されたらすぐに、HTTP 要求を発行すると、デバッグが機能します。

のコマンド エントリに関連付けられた値を に設定することで、コンパイル/テスト/実行/戦争/コンソール Grails コマンドの分岐実行を完全に無効することもできます。しかしそうすると、Grails 2.3 で追加された分岐実行の利点が失われます。grails.project.forkfalse

于 2013-12-20T11:12:01.417 に答える
6

grails (2.3+) アプリケーションのデバッグは、2 つの方法で行うことができます。

1. 簡単な解決策: デバッグを無効にする

BuildConfig.groovy を編集します。

grails.project.fork = [
    war: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, fork ...
    run: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, fork ...

grails.project.fork = [
    war: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, fork ...
    run: false,

長所:

  • 簡単に実行できます (そして開発を続けられます)

短所:

  • これにより、ランタイム コード置換を実行する機能が削除されます。これは、コードを変更すると、自動的に取得されなくなり、変更を確認するにはアプリケーションを再起動する必要があることを意味します。これには非常に時間がかかる場合があります。

2. 関連するソリューション: フォークされたランタイムのデバッグ

これは、実行中の grails アプリケーションにデバッガーを接続する、やや複雑なソリューションです。このブログ投稿で詳しく説明されています。

セットアップが完了すると、grails を fork モードで起動できる追加の実行構成と、その fork モードをデバッグできる別の追加の実行構成ができます。問題は、両方を開始する必要があるか、機能しないことです。

長所:

  • デバッグと実行時のコード置換の両方があります
  • これは、通常モードでのアプリケーションの起動を妨げません。(つまり、追加のオプションがあります)

短所:

  • 設定には少し時間がかかります
  • デバッグ モードでの起動には、より複雑な 2 段階のプロセスが必要です (つまり、時間がかかります)。

考慮事項

解決策 2 は、柔軟性を提供するという意味でほとんど優れています。私は個人的にデバッグをあまり使用しないので、通常モードで開始します。デバッグしたいときは、デバッグモードで再起動します。

解決策 1 は、デバッグする必要があり、多くの再起動も必要な場合に厳密に優れています。たとえば、BootStrap.groovy でドメイン クラスまたはデータベースのセットアップを行っている場合です。

于 2014-10-29T11:40:55.647 に答える
4

この記事を見ましたか?手順を追って説明し、問題を解決してくれました。

http://mrhaki.blogspot.com/2013/12/grails-goodness-debugging-app-in-forked.html

于 2014-11-07T20:59:39.433 に答える
0

これは決してデフォルト設定ではなく、個々の選択に任せるべきです。intellijのデバッグモードでこれを実行するだけで、2つの構成を行うのは非常に面倒です。最初に、run-app の後に「--debug-fork」を追加して、通常の実行構成をセットアップまたは変更する必要があります。次に、すべてのデフォルトを受け入れながら、リモート デバッグを構成する必要があります。次に、実行構成を実行する必要があり、それが実行されているときに、デバッグ構成を実行します。なんてつらい。私は、開発中に分岐オプションなしで実行することを完全にやめることを好みます。時は金なりです。これについては、HAKI 氏の説明を参照してください。http://blog.jdriven.com/2013/12/grails-goodness-debugging-app-forked-mode/

于 2014-02-04T01:23:42.440 に答える
0

Grails のフォーク モードのデバッグに関するこのブログをチェックしてください。

于 2015-07-08T09:19:26.860 に答える
0

1.ターミナル --> コマンド: run-app --debug-jvm

コンソール出力: grails> run-app --debug-jvm | アプリケーションを実行しています... アドレス: 5005 でトランスポート dt_socket をリッスンしています

注: クライアント システムごとにポートを変更/更新します。

  1. デバッガーを追加 [デフォルトでポート 5005 にする必要があります]、「リモート JVM デバッグ」、新しい [Intelli J 設定] を追加

3.完了したら、新しいデバッガーが設定され [ステップ 2]、デバッグ モードで webapp を実行します。

コンソール出力: ターゲット VM に接続されました。アドレス: 'localhost:5005'、トランスポート: 'socket'

  1. Grails[intellij] には 8080 に tomcat が埋め込まれているので、「localhost:8080」を押してコントローラーをクリックします [トグル ポイントを追加した場所]

5.構成が接続されました - 問題を解決するためにデバッグ スキルを調べてください :) :)

于 2021-03-25T17:38:13.030 に答える