私のガールフレンドのMacbookは、休止状態のファイルから復元しようとしたときにクラッシュしました。進行状況バーは約10%で停止し、その後、通常の起動のためにコンピューターを再起動しました。
この休止状態のメモリイメージは、ページで開いている保存されていないドキュメントを開いていました。sleepimage
in があり/private/var/vm
、これは正しく復元されなかった休止状態のイメージだと思います。私たちはそれを生かしておくためにこの事をバックアップしました。
試しましたstrings sleepimage | grep known_substring
が何も返りませんでした。grep -a known_substring sleepimage
また、何もしなかったので、Pagesはテキストデータをプレーンテキストとしてメモリに保持しなかったと想定しています。
編集:Binary grepでこの回答を読んだ後perl -ln0777e 'print unpack("H*",$1), "\n", pos() while /(null_padded_substring)/g' sleepimage
、私は試してみましたが、再び実を結ばなくなりました。UTF-8テキストとの一致を試みるために、ヌルで埋めました。それから私は.*
各キャラクターの間にグロブを試してみました-まだサイコロはありません。
そのため、Pagesはメモリ内の一般的なエンコーディングでテキストを保存しないでしょう。ASCII文字列とページデータ表現の間の変換ルールを見つける必要があります-おそらく、ある種のObjective C文字列バッファだと思っています。私にとっては、文字データを一連の文字以外のものとして格納するのは非常に奇妙に思えますが、これはPagesが行っていることのようです。
Pages内のテキストのメモリ内表現を理解する方法について何か考えがある場合は、この問題を解決するのに非常に役立ちます。たぶん私はいくつかの簡単な方法でプロセスメモリをダンプして読み取ることができますか?
別の可能な解決策はより簡単です-私はこれからコンピュータを再起動することが何らかの形で可能であると想定してsleepimage
いますが、それをどのように進めるかについてのドキュメントは見つかりません。他の一部のユーザー(macrumors)がこれに遭遇したようですが、私が見つけたすべてのフォーラムの質問に対して、誰も応答がありません。
OS XバージョンはSnow Leopard、10.6.8です。
プログラミングに関する複雑な提案を歓迎します。CとPythonを使用しています。
ありがとうございました。
sleepimage
。一意のテキストを探す別の画像をふるいにかけることは、画像のサイズがまだ4GBであり、ページメモリブロックがそのファイルのランダムな場所に割り当てられるため、同様に困難です。RAMをゼロにし、ページを開いてから、スリープイメージでゼロ以外のシーケンスを探すことができると思います。しかし、Pagesは関係なく200MBのメモリを消費します。