web-dev-qa-db-ja.com

IntelliJ IDEAデバッガーはGrailsプロジェクトで動作していません

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

画像をご覧ください:

enter image description here

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

41
ricardogobbo

ここで言及したすべてを成功せずに試しました。唯一役立つ情報は here です。

本質的に、次をgrails-app/conf/BuildConfig.groovyに追加して、フォークされた実行を無効にする必要があります。

grails.project.fork = [
    test: false,
    run: false
]

IntelliJでデバッグが利用可能になりましたIDEA Ultimate Edition v.12.1.6リモートデバッグなしの通常のデバッグのみ。Grails2.3.1でテスト済み、Java 1.7。 0_45、Windows 7 64ビット。

74
Igors

これを試して:

アイデアでは、「実行」ボタンの横にあるリストからEdit configurationを選択します。次にRemoteを追加し、名前を選択してデフォルトのリモート構成設定のままにします。 (ポート5005など)

を使用してコンソールからアプリを実行する

grails run-app --debug-fork

アイデアでは、リストから構成を選択し、コンソールが情報を表示するときにデバッグボタンを押します:

Listening for transport dt_socket at address: 5005
18
akn

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

/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: truerun構成でBuildConfig.groovygrails.project.forkを設定します。今すぐGrailsをIDEA(デバッグしない))から実行すると、アプリケーションがHTTPリクエストを処理する準備ができたときにコンソールに次の行が表示されます。

Listening for transport dt_socket at address: 5005

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

grails.project.forkのコマンドエントリに関連付けられた値をfalseに設定することで、コンパイル/テスト/実行/ war/console Grailsコマンドのフォークされた実行を無効化することもできます。 。ただし、Grails 2.3で追加された分岐実行の利点は失われます。

8
jack_kerouac

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を起動できる追加の実行構成と、フォークモードをデバッグできる別の追加の実行構成があります。問題は、両方を開始する必要があるか、機能しないことです。

長所:

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

短所:

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

考慮事項

解決策2は、柔軟性が得られるという意味で最も優れています。私は個人的にデバッグをあまり使用しないので、通常モードで起動してください。デバッグするときは、デバッグモードで再起動します。

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

6
GhostEcho

この記事を見ましたか?それはステップバイステップの方法を詳述し、私の問題を乗り越えました。

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

4
Peter Kahn

Intellij 15.0.4を使用した2016年のGrails 3.xでは、他のどの回答も機能しません。これは私にとってはうまくいきます:

次のコマンドを使用して、intellijでgrailsを起動します。

run-app  --debug-jvm

コンソールは、「アドレス:5005 Grailsアプリケーションが http:// localhost:808 環境:development」で実行されているトランスポートdt_socketをリッスンする必要があります。

これで、Intellijに「Remote」タイプの新しい構成を追加できます。次に、デフォルトで起動します。

新しいデバッグコンソールウィンドウには、「ターゲットVMに接続済み、アドレス: 'localhost:5005'、トランスポート: 'socket'」と表示されます。

できた.

興味のある方のために、デバッグ可能なサーバーを起動するためのgrails 3.xドキュメントへの参照は、セクション2.8、runningAndDebuggingAnApplicationにあります。

http://grails.github.io/grails-doc/3.1.x/guide/gettingStarted.html#runningAndDebuggingAnApplication

「アプリケーションクラスを実行する方法はいくつかあります。IDEを使用している場合は、クラスを右クリックして、IDE =これはGrailsアプリケーションを起動します。これは、run-app --debug-jvmコマンドの使用時にリモートデバッガーを接続することなくIDEから直接デバッグできるため、デバッグにも役立ちます。コマンドラインから。」

重要な注意点。 「クラスを単に右クリックしてIDEから直接実行する」ことを試みたところ、アプリが起動しました。ただし、コントローラーに送信したすべてのリクエストは、「grailsDispatcherServlet」という名前のサーブレットで「/ myendpoint」という名前のビューを解決できませんでしたというメッセージで500エラーになりました。

そのため、上記の手順に戻りました。

4
Ed J

これは、Grails 3とIdea(2016.1)の非常に単純な問題です。他の回答で推奨されているように、ファイルを編集する必要はもうありません。

何らかの理由で、Ideaツールバーのデバッグアイコンがグレー表示されているため、アプリケーションのエントリポイント(アプリケーションを起動する静的voidメインメソッドを持つクラス)に移動するだけで、実行矢印の1つをクリックします。左側のガターで[デバッグ]オプションを選択します。

JetBrainsドキュメントから:

https://www.jetbrains.com/help/idea/2016.1/getting-started-with-grails-3.html

Grails 3アプリケーションのデバッグ

IntelliJ IDEAでは、Application.groovyを使用してGrails 3アプリケーションをデバッグできます。

プロジェクトツールウィンドウで、initディレクトリを開き、Application.groovyを右クリックします。ドロップダウンリストから[Debug Grails: 'name' grails3_debug_app]を選択します。また、エディターを使用してデバッグプロセスを開始することもできます。

3
pmcollins

Mac Os x LionのGrails 2.3.4で最新のintellijでテストしました。

その後、Igorsのアドバイスを試してみましたが、フォークモードでは動作しません。

grails.project.fork = [
    test: false,
    run: false
]

詳細を確認してください grails documentation

分岐モードをデバッグする場合は、次のブログ投稿の説明をよく確認してください。

http://blog.jdriven.com/2013/12/grails-goodness-debugging-app-forked-mode/

1
daimon

たった3つの推測:

run-appではなくrun-warを実行してみてください。両方とも動作するはずですが、run-warが動作していない可能性があります。

または:コンソールからリモートでデバッグしてみてください:

grails -debug run-appを選択し、Ideaでリモートデバッグに接続します。

または、最後の手段:プロジェクトを以前のGrailsバージョンにダウングレードすることもできます。はい、これは本当に迷惑です。

お役に立てれば。

1
Andrey Chaschev

チェックアウト this Grails Forked Modeのデバッグに関するブログ。

0
biniam

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

0
Beaumont Muni