[解決済み] GDB: クラッシュしたプロセスのすべてのマップされたメモリ領域をリストアップする
質問
x86 Linux マシン (重要ならカーネル 2.6.35-22) 上の死んだプロセスからフルヒープのコアダンプを取得し、GDB でデバッグしようとしています。
このプロセスによって割り当てられたすべてのメモリ アドレス領域のリストを表示する GDB コマンドはありますか。
なぜこのような質問をするかというと、私は
プロセスヒープ全体
を使用するためには、そのバイナリ文字列に対して
find
コマンドの場合、開始と終了のアドレスが必要なんです。単純に0x00から0xff...まで検索しても、以下の理由でうまくいきません。
find
アクセスできないアドレスに遭遇するとすぐに停止してしまいます。
(gdb) find /w 0x10000000, 0xff000000, 0x12345678
警告を表示します。0x105ef883 にあるターゲットメモリにアクセスできないため、停止しています。 を検索してください。
そこで、メモリ内のすべての読み取り可能なアドレス領域のリストを取得し、一度に1つずつ検索できるようにする必要があります。
(を行う必要があるのは その を指すメモリ内のすべての構造体を見つける必要があるからです。 で というアドレスになります)。
なし
show mem
,
show proc
,
info mem
,
info proc
は、私が必要とすることを行うように見える。
どのように解決するのですか?
GDB 7.2にて。
(gdb) help info proc
Show /proc process information about any running process.
Specify any process id, or use the program being debugged by default.
Specify any of the following keywords for detailed info:
mappings -- list of mapped memory regions.
stat -- list a bunch of random process info.
status -- list a different bunch of random process info.
all -- list all available /proc info.
あなたが欲しいのは
info proc mappings
がない場合は動作しません。
/proc
(pos-mortemのデバッグ時など)。
試す
maintenance info sections
の代わりに
関連
-
[解決済み】変数の警告が設定されているが使用されていない
-
[解決済み】警告:互換性のないポインタ型からの代入
-
[解決済み】 switch case: error: case label does not reduce to an integer constant
-
[解決済み] struct has no member named
-
[解決済み】C 未知の型名「my_structure」。
-
[解決済み】未定義参照 makefile が間違っているのかも?
-
[解決済み】Makefile:1: ***セパレータがありません。停止します。
-
[解決済み】警告:式の結果が未使用の場合
-
[解決済み】Linuxソケットのwrite()でBad File Descriptorが発生するC
-
[解決済み] アプリケーションやプロセスの実際のメモリ使用量を測定するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン