
Linux 上で実行中のプロセスのユーザー空間メモリを表示/編集するツールはありますか?
それは素晴らしい学習ツールになるでしょう。
答え1
プロセスのメモリは、ファイル として利用できます/proc/12345/mem
。ここで、12345 はプロセス ID です。ただし、しばらくの間は、そこから直接何かを知ることはできません。まず、どの部分がマップされているかを把握する必要があります。この情報は、および で入手できます/proc/12345/maps
。/proc/12345/smaps
のエントリは、次の/proc
カーネル ドキュメントに記載されています。Documentation/filesystems/proc.txt
このlsof
コマンドは、プロセスがメモリにマップしたファイルに関する情報をより読みやすい形式で提供します。
実行中のプロセスをデバッガで見る方が有益かもしれません。Linuxで一般的なデバッガはグッディービーGdb にはシンプルなコマンドライン インターフェイスがあります。DDDそしてエマックよりユーザーフレンドリーなインターフェースを提供します。最良の結果を得るには、デバッグ シンボルが残っていてソースが利用可能なプログラムを調べます (つまり、コンパイルしたばかりでストリップされていないプログラムを調べます-g
)。
strace
また、プロセスが行っているシステム コールを監視する方法と、ltrace
(一部の) ライブラリ コールを監視する方法についても知っておく必要があります。