2016-11-17 9 views
0

Javaコードからバイトコードへの詳細なコンパイルプロセスを知りたいと思います。たとえば、Javaコードがバイトコードに変換される方法など、Javaコンパイラのソースコードにブレークポイントを設定したいのですが、わかりませんそれを行う方法は、そのための参照や手順はありますか?Javaコンパイラのソースコード(Javac)自体をデバッグする方法は?

BTW、 私はJavaのデバッガを使用する方法はわかりませんが(私はそれを使う方法は明らかです)、Javaのソースコードの代わりにJavaコンパイラのソースコードをデバッグする方法を意味します。

+0

[コンパイラの構築](https://en.wikipedia.org/wiki/Compiler)は、通常大学などで学んだ高度なトピックです。どこから始めたらよいかわからない場合は、必要とされる基礎知識のほとんどが不足している可能性がありますこのプロジェクトでどんな成功を収めています。コンパイラはC++で書かれているので、 "ブレークポイントを置く"だけで何が起こるか見ることはできません。 – Kayaman

+1

@Kayaman:どのJavaCが書かれているのか分かりませんが、どの言語に書かれていても必ずデバッガがあり、あなたはブレークポイントを設定することができます。私は自分のコンパイラでこの数の時間を過ごしました。それはそれらをデバッグする唯一の技術ではありません。 –

+0

@IraBaxter Eh、私は間違っていた。 Javacは実際にJavaで書かれていて、C++では書かれていません(JVMのように)。だからこの質問は、コンパイラの半分の構築とデバッガの使い方の半分です。私は他の言語にはデバッガがあることを知っています。出発点があまりにも低いと、私はそれが重要であるとは思わない。 – Kayaman

答えて

2

コンパイラがどのように動作するかについてのあなたの質問は、ここでは答えが広すぎます。標準コンパイラのテキストブックを読んでください。コンパイラのデバッグについて

:私は重くコンパイラ(自己診断)でのアサーションと、さまざまな言語に焦点を当てた小さなターゲット言語テストプログラムの広いスイートを使用する傾向がある

は、彼らの正しい機能を自己確認することを特徴としています。 (私の最後のコンパイラには、10年間にわたって構築された数千のテストプログラムと、それらをすべてコンパイルして実行するスクリプトがあります)。多くの場合、アサーションやテストの失敗は、コンパイラが間違っていて、単なる検査でそのバグを識別していることを私に暗示します。

私はしばしば、文書化されていない特別なコマンドラインスイッチで有効にできるコンパイラの状態と活動の痕跡に関する重要な情報をダンプする特別なコードを追加します。これらの特別なダンプは、コンパイラがどこに迷惑を掛けているかを示し、また、しばしばバグの場所を特定するコード検査を可能にする。

私はコンパイラを記述した言語でデバッガを使用しています。

私はこれらの技術を特に特別なものとは考えていません。大規模で複雑なアプリケーションを扱うときに便利です。

+0

私はコンパイラの動作を尋ねなかったので、Javaコンパイラ自体にブレークポイントを設定する方法を尋ねました。(JavaソースコードをコンパイルするときにJavaコンパイラのソースコードがあるとします) –

+0

@Hermas:私はJavaコードからバイトコードへのコンパイルプロセスを知りたいです。ほとんどの人はそれを "コンパイラの仕組みを知りたい"と解釈します。それがあなたの質問ではないなら、あなたはそれをとてもうまく表現しませんでした。 JavaCで「ブレークポイントを設定する」方法を知りたい場合は、Java開発ツールを入手し、そのデバッガがブレークポイントを設定する方法を学ぶことをお勧めします。なぜこれは分かりませんか? –

+0

私は明らかにEclipseのアイデアのようなIDEのJavaコードのブレークポイントを設定する方法を知っていますが、どのようにJavaCのブレークポイントを設定するのですか?つまり、最初にJavaCをソースコードとともにIDEにインポートしてから、ソースコードをデフォルトのデバッガとしてJavaCを設定する必要がありますが、その2つの手順はどのように行うのですか? –

関連する問題