7

私は intellij Idea を使用して、Tomcat で実行されているアプリケーションをデバッグしています。しかし、一部のクラスでは行ブレークポイントが機能しないという問題があります(メソッドブレークポイントは正常に機能しています...しかし遅いです)。メソッドのブレークポイントまたは別のクラスからクラスにステップ インすることで、コードの特定の行にアクセスしたり、変数を調べたりできますが、デバッガーはどの行でも停止しません。(IntelliJ は空の赤い円 (× なし) を示します)

更新: この問題は Tomcat に限定されません。別のプロジェクトで Weblogic に同じ問題があります。したがって、それは Idea または Java の問題です。

考えられる理由は何ですか?特別なコンパイラ オプションはありません。クラスを逆コンパイルすると、LineNumberTables と LocalVariableTables が存在します。2 つのクラス (行ブレークポイントが有効なクラスとそうでないクラス) は同じパッケージに含まれています。私のソースは、デプロイされたコードと正確に一致します。すべての intellij アイデア キャッシュをクリアしました (ここで提案された [system]/jars も: Debugger does not stop at source code in Intellij IDEA )

  • Java 1.6.0_43 (64 ビット)
  • IntelliJ アイデア 12.1.3
  • トムキャット 6.0.36
  • Debian テスト
  • Windowsを使用している他の開発者にとっては問題なく機能するため、プロジェクトの問題ではありません

CrazyCoder で提案されているように Idea でデバッガー トレースを有効にすると、次の結果が得られます (アイデアで行ブレークポイントを追加/削除すると出力が表示されます)。

大丈夫なクラス

==== Enable Breakpoint ====
[JDI: Sending Command(id=25172) JDWP.EventRequest.Set]
[JDI: Sending:                 eventKind(byte): 8]
[JDI: Sending:                 suspendPolicy(byte): 1]
[JDI: Sending:                 modifiers(Modifier[]): ]
[JDI: Sending:                     modifiers[i](Modifier): ]
[JDI: Sending:                     modKind(byte): 5]
[JDI: Sending:                         classPattern(String): com.teamead.fwf.web.controller.ino.datauser.flightplan.EquipmentDefinition]
[JDI: Receiving Command(id=25172) JDWP.EventRequest.Set]
[JDI: Receiving:                requestID(int): 23]
[JDI: Retrieving matching ReferenceTypes, sig=Lcom/teamead/fwf/web/controller/ino/datauser/flightplan/EquipmentDefinition;]
[JDI: Sending Command(id=25174) JDWP.VirtualMachine.ClassesBySignature]
[JDI: Sending:                 signature(String): Lcom/teamead/fwf/web/controller/ino/datauser/flightplan/EquipmentDefinition;]
[JDI: Receiving Command(id=25174) JDWP.VirtualMachine.ClassesBySignature]
[JDI: Receiving:                classes(ClassInfo[]): ]
[JDI: Receiving:                    classes[i](ClassInfo): ]
[JDI: Receiving:                    refTypeTag(byte): 1]
[JDI: Receiving:                    typeID(long): ref=7269]
[JDI: Receiving:                    status(int): 7]
[JDI: Looking up Class, signature='Lcom/teamead/fwf/web/controller/ino/datauser/flightplan/EquipmentDefinition;', id=7269]
[JDI: Sending Command(id=25176) JDWP.EventRequest.Set]
[JDI: Sending:                 eventKind(byte): 2]
[JDI: Sending:                 suspendPolicy(byte): 2]
[JDI: Sending:                 modifiers(Modifier[]): ]
[JDI: Sending:                     modifiers[i](Modifier): ]
[JDI: Sending:                     modKind(byte): 7]
[JDI: Sending:                         loc(Location): com.teamead.fwf.web.controller.ino.datauser.flightplan.EquipmentDefinition:24]
[JDI: Receiving Command(id=25176) JDWP.EventRequest.Set]
[JDI: Receiving:                requestID(int): 24]

==== Disable Breakpoint ====
[JDI: Sending Command(id=25178) JDWP.EventRequest.Clear]
[JDI: Sending:                 eventKind(byte): 2]
[JDI: Sending:                 requestID(int): 24]
[JDI: Receiving Command(id=25178) JDWP.EventRequest.Clear]
[JDI: Sending Command(id=25180) JDWP.EventRequest.Clear]
[JDI: Sending:                 eventKind(byte): 8]
[JDI: Sending:                 requestID(int): 23]
[JDI: Receiving Command(id=25180) JDWP.EventRequest.Clear]

うまくいかないクラス

==== Enable Breakpoint ====
[JDI: Sending Command(id=25182) JDWP.EventRequest.Set]
[JDI: Sending:                 eventKind(byte): 8]
[JDI: Sending:                 suspendPolicy(byte): 1]
[JDI: Sending:                 modifiers(Modifier[]): ]
[JDI: Sending:                     modifiers[i](Modifier): ]
[JDI: Sending:                     modKind(byte): 5]
[JDI: Sending:                         classPattern(String): com.teamead.fwf.web.controller.ino.datauser.flightplan.FlightPlanBackingBean]
[JDI: Receiving Command(id=25182) JDWP.EventRequest.Set]
[JDI: Receiving:                requestID(int): 25]
[JDI: Retrieving matching ReferenceTypes, sig=Lcom/teamead/fwf/web/controller/ino/datauser/flightplan/FlightPlanBackingBean;]
[JDI: Sending Command(id=25184) JDWP.VirtualMachine.ClassesBySignature]
[JDI: Sending:                 signature(String): Lcom/teamead/fwf/web/controller/ino/datauser/flightplan/FlightPlanBackingBean;]
[JDI: Receiving Command(id=25184) JDWP.VirtualMachine.ClassesBySignature]
[JDI: Receiving:                classes(ClassInfo[]): ]
[JDI: Receiving:                    classes[i](ClassInfo): ]
[JDI: Receiving:                    refTypeTag(byte): 1]
[JDI: Receiving:                    typeID(long): ref=7257]
[JDI: Receiving:                    status(int): 7]
[JDI: Looking up Class, signature='Lcom/teamead/fwf/web/controller/ino/datauser/flightplan/FlightPlanBackingBean;', id=7257]

==== Disable Breakpoint ====
[JDI: Sending Command(id=25186) JDWP.EventRequest.Clear]
[JDI: Sending:                 eventKind(byte): 8]
[JDI: Sending:                 requestID(int): 25]
[JDI: Receiving Command(id=25186) JDWP.EventRequest.Clear]
4

2 に答える 2

3

私はまったく同じ問題を抱えていて、それを回避しました-セットアップが同じかどうかはわかりませんが、私の問題は、クラスファイルがモジュールのコンテンツルートの下のフォルダーに出力されていたことでした(持っていたとしても)モジュール設定で除外とマークされたフォルダー)。

すべてのローカル クラス ファイルを削除し、コンパイラの出力設定を更新してコンテンツ ルートの外を指すようにし、プロジェクトを再構築したところ、すべてが期待どおりに機能するようになりました。

于 2013-05-29T14:19:20.513 に答える