変数に実際に必要なビット幅を追跡するピン ツールを作成しています。高レベル (C 変数など) を追跡するために、実行可能ファイルにビルドされたデバッグ情報を使用したいと考えています。
ピン API を使用してデバッグ情報を抽出する方法を見つけることができませんでした。
デバッグ情報を抽出するためにピン API 関数が呼び出される場合はお知らせください。ピンで不可能な場合、代替手段は何ですか?
(例: DynamoRIO)
2 に答える
シンボル情報を探しています。残念ながら、PIN では、C や C++ などの高級言語で使用される変数名に直接アクセスすることはできません。この情報が必要な場合は、Windows 用、または Linux 用に含めることができますが、dbghelp
それには 2 つの完全に異なる実装が必要になります。PIN ユーザー ガイドには、シンボルに関するいくつかの情報と、呼び出された関数に関するシンボル情報にアクセスするための基本機能があります。libelf
libdwarf
Pin は、シンボル オブジェクト (SYM) を使用して関数名へのアクセスを提供します。シンボル オブジェクトは、アプリケーション内の関数シンボルに関する情報のみを提供します。他のタイプのシンボル (データ シンボルなど) に関する情報は、ツールによって個別に取得する必要があります。
「デバッグ シンボルを使用するのに役立つ pin などの DBI プロファイリング フレームワークは他にありますか?」というフォローアップの質問への回答として。
pin とは異なり、DynInst は変数のデバッグ シンボルと明らかに偶数型を理解します。彼らのチュートリアル ( http://www.paradyn.org/tutorial/Dyninst.pptx ) から:
bp_image->findVariable(“global1”);
bp_proc->malloc(bp_image->findType(“int”));