2016-03-24 9 views
3

私はErlang moduleを経由しています。 Erlangのバーチャルマシンのトレース機能はどのように実装されていますか?Erlangトレース技術はどのように機能しますか?

トレース呼び出しを追加するためにバイトコードを即座に「再コンパイル」しますか?または、スケジューラごとにすべてのバイトコードを「解釈」し、そのたびにリアルタイムでトレースロジックを実行しますか?それとも全く別のもの?

答えて

4

実行時にコードを変更して、GDBがネイティブコードにブレークポイントを挿入する方法と非常によく似ています。

つまり、関数内の最初の命令は、トレースを行い、関数にジャンプする前に元のコードを呼び出す特別なトレース命令によって上書きされます。

+0

ありがとうございます。私が理解しているように、gdbはデバッグのためのカーネルのサポートに頼ってこれを行います。 Erlang VMでどのように動作するのかについての参考文献はありますか? – elpddev

+0

私は参照があるとは思わない。問題のコードで作業するので、私はそれを知っています。 – Lukas

関連する問題