私は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) です。