コンパイルされたcプログラムからグローバル変数に関する情報を取得する必要があります。私はここで同様の質問をしました。
私が今抱えている問題は、変数情報を抽出しようとしているプログラムが非常に大きく、ツリーをテキストで取得するだけで4秒かかることです(readelf -w[i] file.out
)。次に、必要な場所に到達するために、前後にジャンプするツリーを解析する必要があります。たとえば、変数がタイプのconst unsigned char * volatile MyVariable
場合、ツリーの5つの異なるノードに移動する必要があり、プログラムに1000個の変数が含まれている場合、必要なものを取得するのに時間がかかります。
ですから、私の質問は、readelfコマンドをより有効に活用して必要なものを実現するにはどうすればよいかということです。このreadelf -w[i] file.out
コマンドは、必要な情報(すべての関数、サブルーチン、ローカル変数など)を提供します。たとえば、そのコマンドの出力を調べてグローバル変数を取得する代わりに、readelf -s --wide file.out
コマンドを使用して変数のみを取得します。そのコマンドは変数の名前を教えてくれるので、たとえば変数が整数であるかどうかを確認するためにツリーを調べる必要があります。
このリンクの237ページには、たとえばタイプに関する情報を取得する方法の例があると思います。ここに写真があります:
必要なものを解析するのに約15秒かかりますが、まだいくつかのバグがあります。車輪の再発明をしなくても、readelfコマンドをより有効に活用できれば便利です。