0

Eclipse から Apache Camel を使用して Web アプリケーションをデバッグしようとしていますが、「トレース」しているときに、Eclipse がソース ファイルがないと言うポイントに到達し、Eclipse に表示されるバイトコードを確認できます (通常、ソースコードが表示される場所) )しかし、どうやらそのバイトコードに進むことはできません(「F6 /ステップオーバー」を試みますが、何も起こりません)とにかく(ソースコードと比較してそれほど役に立たなかったというわけではありません)。

では、どのようにしてそのような獣にたどり着くのでしょうか?

これらすべてのコード生成/コード傍受レイヤーが、解決しようとしているよりも多くの問題を作成していないかどうか疑問に思っています. すべてが機能している限りは役立つように思えますが、問題が発生するとすぐに診断が非常に難しくなります。

EDIT Apache Camel自体をトレースしたくありません。Apache Camel を使用しているプログラムをトレースしたいだけですが、物事がすぐに非常に厄介になることに気づきました。基本的に、Java ソースコードから「何か」にジャンプするため、トレース機能が失われます。

4

2 に答える 2

1

Apache Camel は、バイトコード操作や計測を行いません。Camel Proxy 機能を使用する場合、せいぜい JDK ライブラリの Proxy を使用します。

したがって、Eclipse デバッガーがソース コードにステップインできない原因は、他のライブラリーに違いありません。

Apache Camel のすべてのソース コードは、maven 標準を使用して -source JAR として配布されます。Maven を使用する場合は、-source JAR をダウンロードするための maven コマンドがあり、これを Eclipse で使用できると想定しています。

私はEclipseを使用していませんが、mavenリポジトリから-source JARを自動ダウンロードできるIDEAを使用しています。

于 2011-01-19T14:31:29.217 に答える
1

CGlib または JDK Proxy によってプロキシされたコードをデバッグするには、デバッガをプロキシされたコードを呼び出す行に移動します...

public void foo() {
  serviceWithProxy.bar(); // put breakpoint here
}

...serviceWithProxy.bar()プレスCtrl+T(Eclipse) にステップインして、デバッグするタイプ (たとえばServiceWithProxyImpl) を選択する前に。最初の行にブレークポイントを置きServiceWithProxyImpl#bar(Eclipse が自動的にそこに移動します)、デバッガーで [続行] を押します。これは、デバッグ中にプロキシをスキップする最も簡単な方法です。

于 2011-02-07T21:33:43.353 に答える