Linuxでグローバル変数のメモリを確認の方法
Linuxでは、変数のメモリ値をcatコマンドと/procファイルシステムで参照することができます。
グローバル変数varがあった場合に、そのメモリを参照するには、次の手順に従います。
- プロセスID(PID)でプロセスを見つけましょう。実行中のプロセスのPIDは、psコマンドなどを使用するとわかります。
- /procディレクトリ内に入り、目的過程のPIDに対応したディレクトリに入る。例、目的過程のPIDが1234であれば以下のコマンドを叩く。
- /proc/1234ディレクトリにcd
- このディレクトリーには、プロセスがメモリマップした情報を格納した「maps」というファイルがあります。このファイルは「cat」コマンドを使用して開くことができます。
- 猫の地図
- このファイルにはプロセスのメモリマップ領域が含まれており、グローバル変数のメモリアドレス範囲を見つけることができます。
- グローバル変数のアドレス範囲に対応するメモリ値を /proc/PID/mem ファイル内から検索する場合は、`dd` コマンドで /proc/PID/mem ファイル中のデータを抽出し、`xxd` コマンドで16 進数のダンプとして表示するとよいでしょう。
- dd if=/proc/1234/mem bs=1 skip= count= | xxd
- はグローバル変数のメモリの開始アドレス、はグローバル変数の長さ(バイト)。
グローバル変数のメモリのダンプには十分な権限が必要です。現在のユーザーに十分な権限がない場合は、/proc/PID/memファイルは開けない可能性があります。