Next: , Previous: , Up: Lossage   [Contents][Index]


51.7 クラッシュ後のリカバリー

Emacs、またはコンピューターがクラッシュした場合、クラッシュしたとき編集していたファイルを、自動保存ファイルからリカバリーすることができます。これを行なうには、再びEmacsを開始して、コマンドM-x recover-sessionとタイプしてください。

このコマンドはm最初に中断されたセッションのファイルを、ファイルの日付とともにリストするバッファーを表示します。そこからリカバリーするファイルを、選択しなければなりません。通常リカバリーしたいファイルは、一番最近のセッションでしょう。選択したファイルにポイントを移動して、C-c C-cとタイプしてください。

その後recover-sessionは、そのセッション中に編集していた各ファイルについて、検討を行ないます。そのようなファイルそれぞれについて、そのファイルをリカバリーするか尋ねるのです。あるファイルにたいしてyと応えると、コマンドはファイルとファイルの自動保存ファイルの日付を表示して、再度そのファイルをリカバリーするか尋ねます。この2回目の質問にたいして同意するには、yesと応えなければなりません。yesと応えた場合、Emacsはそのファイルをvisitしますが、テキストは自動保存ファイルから取得します。

recover-sessionが終了すると、リカバリーを選択したファイルがEmacsバッファーに表示されます。そこでファイルを保存する必要があります。それらを保存することだけが、そのファイル自身を更新するのです。

ファイルに関連付けられていないバッファーをリカバリーしたいときや、自動保存が重要な更新を記録するほど最新でなかった場合、最後の手段として — コアダンプが保存されていて、Emacsの実行ファイルからデバッグシンボルがストリップされていないという条件の元に — コアダンプからそれらを取得するために、GDB(GNUデバッガー)でetc/emacs-buffer.gdbスクリプトを使用することができます。

コアダンプを入手したら、すぐにcore.emacsのような別の名前にリネームします。これにより、他のクラッシュによるコアダンプの上書きを防ぎます。

このスクリプトを使用するには、Emacs実行ファイル名とコアダンプのファイル名を、‘gdb /usr/bin/emacs core.emacs’のように指定します。(gdb)プロンプトで、‘source /usr/src/emacs/etc/emacs-buffer.gdb’としてリカバリースクリプトをロードします。それから利用可能なバッファーを見るために、コマンドybuffer-listとタイプします。これは各バッファーにたいして、バッファー番号をリストします。バッファーを保存するには、ysave-bufferを使用します。ここでバッファー番号とそのバッファーを書き込むファイル名を指定します。すでに存在するファイル名を使用するべきではありません。ファイルがすでに存在する場合、このスクリプトはそのファイルの古い内容のバックアップを作成しません。