質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Q&A

解決済

1回答

3483閲覧

x64のMemory.dmpについて

mats

総合スコア32

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

0グッド

0クリップ

投稿2016/09/02 18:27

x64のMemory.dmpについて以下のMSサイトを見つけました。

X64 の TrapFrame は信用できない?

これをみるとripの値は揮発性であり信用できないと記載があります。
個人的にripって解析をするうえで一番重要なレジスタではないかと
考えております。

皆さんは実行レジスタの処理を確認する際、どのようにされておりますでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ripの値は揮発性であり信用できない

とのことですが、これはちょっと 表現が適切ではない 気がします。

確かに ripレジスタ はリアルタイムに値が変更される(=揮発性)レジスタではありますが、Memory.dmp(=TrapFrame)に記録されるのは STOP エラーが発生したり割り込みが発生した後おそらく実際にレジスタの値を記録した時点 の値を 忠実に記録 したものであって、割り込みが発生する前 に人為的に書き換えた値が保存されている訳ではありません。

ripレジスタ の場合、エラーの ① 原因となった箇所 と、例外発生により ② 割り込みが掛かった時点 と、実際にレジスタの値を ③ 記録した時点 では、値が刻一刻と変化して行くのは当たり前のことなので、①と③を取り違えないよう忠告するメッセージが表示されているだけです。

実際にデバッグする際は、Memory.dmp(=TrapFrame)から エラー発生箇所の当たりを付けてデバッガー により原因を探る訳ですが、デバッガーで ステップ動作やブレークポイントの設定 を行った場合に表示される ripレジスタの値 は、文字通り 確認したい箇所におけるレジスタの値 に他なりません(=つまり信頼できる値です)。

また、ページフォールトをハンドルするルーチン nt!KiPageFault で 揮発的(Volatile)なレジスタと rbp がスタックに保存されている ということは、割り込みが掛かった時点(上記②)のレジスタの値を保存しておくことで、その内容をも確認できることを意味しています。

エラー発生時に、原因調査のために一般的に良く利用されている スタックトレース は、このように スタックに保存されている「呼び出し元」の情報 を辿ることで表示が可能になっています。

ですから、実行レジスタの処理を確認する際 には、これまで通りデバッガーが示すレジスタの値をそのまま確認すれば良いだけです。

デバッグに際して Memory.dmp(=TrapFrame)をどのように活用すれば良いかについては、例えば下記ページなどが参考になると思います。(ripレジスタの値をそのまま利用している訳ではないです。)

Windows のクラッシュダンプを解析する(Windows SDK for Windows 8)
別環境で採取した Core ファイルを解析する方法

投稿2016/09/02 19:58

pi-chan

総合スコア5936

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mats

2016/09/03 11:12

確かにそうですね。 TrapFrameを復元してripの中を見ることはできてたので。 ただ、記事があまりに衝撃的に見えたので不安になりました。 ご回答どうもありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問