0

私はJITを持っています。この回答watchのように、関数のジットコード(すべて)にウォッチポイントを設定しました( -書き込み時にのみトリガーする必要があります) 。そして、valgrind に提供します。これは、すべての命令をインストルメント化する必要があり、停止が発生した正確な場所で実行が停止したことを確認する必要があることを意味します。--vgdb=full

ただし、監視されている関数の途中でウォッチポイントが数回トリガーされます。実行が停止する命令は、基本ブロックのエントリ ポイントであることに気付きました (それらはすべて ajumpまたは a のいずれかに従うかcall、関数の最初の命令です)。

ウォッチポイントの起動時に、監視されているメモリへの実際の書き込みが表示されません。では、valgrind はこのメモリ (一部) の実行を書き込みと見なしますか? それとも、他のvalgrindの奇妙さですか、それとも私だけですか?

どうか明らかにしてください。

私の valgrind バージョンは 3.10.0.SVN、gdb は 7.7.1 (Ubuntu 7.7.1-0ubuntu5~14.04.2) です。

4

1 に答える 1

0

一部のコードの実行は、valgrind gdbserver による書き込みと見なされるべきではありません。一部の valgrind トレース引数 (-v -v -v -d -d -d) によって、何が起こるかがわかります。

于 2015-08-23T20:55:26.193 に答える