3

Eclipse IDE を使用して Scala マクロ実装にブレークポイントを設定しようとして失敗しました

まず、Scala Macros Rock! 今までは Scala よりも Clojure を好んでいましたが、マクロについてはよくわかりません

関数の toString と関数自体を返すマクロを作成しようとしています。それが機能したら、適切な toString を使用して新しい関数を作成します。ああ幸せな日々。

しかし、マクロをデバッグできる必要があります。私は Eclipse (20110615-0604) と Scala (2.10.1) を使用しています。scala-compiler-2.10.1.jar をダウンロードすると、http://www.warski.org/blog/2012/12/starting-with-scala-macros-a-short-tutorial/ のコードが機能するようになりまし。簡単なマクロもいくつか書いています。マクロはEclipseプロジェクト「ScalaMacro」にあり、それらを使用するコードは別のプロジェクト「HelloScalaMacro」にあります

私は今それらをデバッグしたいと思います

http://docs.scala-lang.org/overviews/macros/overview.htmlの指示に従って、scala.tools.nsc.Main をエントリ ポイントとして実行時の構成を作成しました。-cp HelloScala.scala を追加しました。構成を実行すると、実際にコードがコンパイルされているように見えます (エラーを入力すると、エラーが正しく報告されます)。

残念ながら、この手順では、マクロ実装のブレークポイントによって Eclipse が一時停止する必要があることを暗示しています。そうではありません。

私はいつものように Eclipse/Scala マクロ/デバッグ/ブレークポイントを Google 検索し、scala-macro タグのすべての stackoverflow の質問を読み、見つけたすべての Eclipse 設定でいろいろ試しました。

それで、ブレークポイントを設定する方法を知っている人がいる場合は、その方法を教えていただけますか:それはEclipseバージョン/ scalaバージョン/ ...の問題ですか?

4

2 に答える 2

2

私はこれを自分で試したことはありません.原則として、すでに試したものと同じくらい(またはそれ以上)失敗する可能性がありますが、成功した場合はより便利になる可能性があります.

これを試すには、Scala-IDE とソース機能がインストールされている必要があります。「Eclipse Classic」、「Eclipse for RCP Developers」、または自分で思いついた同様の組み合わせのいずれかである Eclipse インストールから作業していることを確認してください。

また、Equinox Weaving Launcher プラグインをインストールすると、「Equinox Weaving を使用した Eclipse アプリケーション」ランチャーを作成できるようになります。

今:

  1. 新しいワークスペースを作成する
  2. Scala プロジェクトを作成する
  3. そのプロジェクトにマクロ コードを植える
  4. マクロ ソースにブレーク ポイントを追加する

デバッグの準備:

  1. 新しい「Eclipse Application with Equinox Weaving」デバッグ起動構成を作成します。「New_configuration」よりも洗練された名前を付けてください。

    • 「場所」の下で、新しい別のワークスペースディレクトリを指します
    • 「構成」タブの下で、「-Xmx1536m」のようなものを提供します
    • デフォルトでは、実行中の Eclipse インスタンスで使用できるすべてのプラグインが、起動しようとしているインスタンスで使用できるはずです。非プラグイン プロジェクトをクラスパスに含めるには、Eclipse で多少の調整が必要になる場合があります。
  2. ここで、デバッグ構成を起動します。

    • Scala-IDE のバージョンによっては、"Multiple launchers available -- Select one..." という警告が表示される場合があります。「Equinox Weaving 対応の Eclipse アプリケーション ランチャー」に行きます。

デバッグ中の Eclipse インスタンスに入ったら、次のようにします。

  1. マクロを使用するプロジェクトを作成します
  2. バイナリ出力に依存関係を追加してください
  3. デバッグ中のワークスペースのプロジェクトにマクロの小さな使用例を追加します。
  4. 指を交差させます
  5. 建てる

理論的には、Eclipse インスタンスを起動すると、ブレークポイントでデバッグ中のインスタンスが一時停止します。

于 2013-05-06T12:07:59.537 に答える
2

Nadavwr の指示 (すぐ下) は役に立ちました。他の人にもお勧めします。

私にとって重要な解決策は、マクロを定義するプロジェクトとマクロを使用するプロジェクトの 2 つのプロジェクトが関係していることを認識することでした。むしろばかげて、マクロを定義したプロジェクトをデバッグしようとしていました

したがって、ドキュメントに記載されている手順は正しいので、正しいプロジェクトでそれらを実行していることを確認する必要がありました: もちろん明らかです。

他の人の利益のために、コマンドラインscalacを使用してコマンドラインを正しくすることが非常に役立つことがわかりました。それを編集して、どのディレクトリにいるのかを制御し、次にEclipseで

Scala マクロの使用を考えている人が気付くもう 1 つのことは、scalac を直接実行した場合のエラー メッセージは、Eclipse からのエラー メッセージよりもはるかに優れているということです。

于 2013-05-06T12:39:27.120 に答える