JITの出力を処理する必要があるトレースツールを作成しているので、スタックがかなり奇妙に見えることがあります。いくつかのヒューリスティックをアドレスに適用して、それらがコード、データ、またはガベージであるかどうかを判断してみたいと思います。(私が時々間違っている場合、それは大したことではありませんが、プロセスがクラッシュした場合、それほど多くはありません。)
cat /proc/«pid»/maps
LinuxのプロセスのVMマッピングのリストを取得できます。そのファイルを解析せずに、プロセス内からこの情報(または任意のサブセット)にアクセスすることは可能ですか?rwx
アドレスのビットを調べるのが理想的です。基本的に、の「読み取り」バージョンが必要ですmprotect(2)
。
これができない場合、特定のアドレスへのアクセスがセグメンテーション違反を引き起こすかどうかを判断するのはどうですか?(この場合、すでにSIGSEGV
ハンドラーがインストールされているので、簡単に上書きすることはできません。または、それを実行するだけです。)