プロセッサと、データを格納するための少なくとも1つのメモリとを備えるコンピュータシステム内でトリアージダンプを生成する方法であって、前記メモリは、複数のメモリ領域を備え、前記方法は、前記複数のメモリ領域に格納される第1の複数のデータ値を識別するステップであって、前記第1の複数のデータ値のそれぞれが個人情報の特性を有する、ステップと、前記第1の複数のデータ値のそれぞれを、ヌルポインタの値には対応していない1つ以上の上書き値で上書きするステップとを有する方法。前記複数のメモリ領域に格納される第2の複数のデータ値を識別するステップであって、前記第2の複数のデータ値のそれぞれが、ポインタの特性を有する、ステップと、前記第2の複数のデータ値を変更せずに残すステップとを有する、請求項1に記載の方法。前記ポインタの特性を有する前記第2の複数のデータ値のうちの第1のデータ値が、第1のメモリ領域のアドレスに対応し、前記第1のメモリ領域は、プログラムコード、ライブラリコード、またはコールスタックに関連づけられている、請求項2に記載の方法。前記複数のデータ値のうち第1のデータ値に対する上書き値は、該第1のデータ値に依存する、請求項1に記載の方法。前記第1のデータ値に対する前記上書き値は、前記第1のデータ値が第1の範囲内の値に属する場合には第1の上書き値であり、前記第1のデータ値に対する前記上書き値は、前記第1のデータ値が第2の範囲内の値に属する場合には第2の上書き値である、請求項4に記載の方法。コンピューティングデバイスであって、1つ以上のコンピュータプログラムを実行する少なくとも1つのプロセッサと、前記1つ以上のコンピュータプログラムによって使用されるデータを格納する複数のメモリ領域を有する少なくとも1つのメモリと、トリアージダンプを作成するトリアージダンプエンジンとを備え、前記トリアージダンプエンジンは、前記複数のメモリ領域に格納される複数のデータ値を識別する識別エンジンであって、前記複数のデータ値のそれぞれが個人情報の特性を有する、識別エンジンと、識別された複数のデータ値のそれぞれに対する上書き値を、複数の上書き値の候補の中から選択する選択エンジンと、前記識別された複数のデータ値のそれぞれを、選択した上書き値で上書きする上書きエンジンとを備える、コンピューティングデバイス。前記選択エンジンは、前記複数のデータ値の第1のデータ値に対する上書き値を、前記第1のデータ値に基づいて選択する、請求項6に記載のコンピューティングデバイス。前記選択エンジンは、前記第1のデータ値が第1の範囲内の値に属する場合には、前記第1のデータ値に対して第1の上書き値を選択し、前記選択エンジンは、前記第1のデータ値が第2の範囲内の値に属する場合には、前記第1のデータ値に対して第2の上書き値を選択する、請求項7に記載のコンピューティングデバイス。データ値の前記第1の範囲が負の値を含む、請求項8に記載のコンピューティングデバイス。前記選択エンジンは、前記複数のデータ値の第2のデータ値に対する上書き値を、前記第2のデータ値に基づいて選択し、前記選択エンジンは、前記第2のデータ値が値の前記第1の範囲内にある場合には前記第1の上書き値を選択し、前記選択エンジンは、前記第2のデータ値が値の前記第2の範囲内にある場合には前記第2の上書き値を選択する、請求項8に記載のコンピューティングデバイス。一観点による課題は、ユーザのプライバシーを保護しつつ、エラーを診断するのに有用な情報をシステムが取得できるようにすることである。一観点による方法は、プロセッサと、データを格納するための少なくとも1つのメモリとを備えるコンピュータシステム内でトリアージダンプを生成する方法であって、前記メモリは、複数のメモリ領域を備え、前記方法は、前記複数のメモリ領域に格納される第1の複数のデータ値を識別するステップであって、前記第1の複数のデータ値のそれぞれが個人情報の特性を有する、ステップと、前記第1の複数のデータ値のそれぞれを、ヌルポインタの値には対応していない1つ以上の上書き値で上書きするステップとを有する方法である。<実施の形態の概要>エラー報告システムの一部として、ユーザのコンピュータからメモリダンプデータを送信するための技術を本明細書で説明する。メモリダンプは、動作エラーの原因を識別する際に有用な情報を含むことができ、一方、ユーザ固有の個人データがメモリダンプデータに含まれるリスクを低減することができる。ユーザ固有の個人データがメモリダンプに含まれるリスクを低減するために、データ値を上書き値で上書きすることによって、個人データのデータ特性を有するメモリの部分を書き換える。上書き値は、エラーの原因を識別する際に、メモリダンプデータの値を増やすために選択することができる。いくつかの実施形態において、上書きされたメモリ領域と、上書きされずに情報が保持されたメモリ領域とを区別することを可能にするよう、上書き値を選択することができる。いくつかの実施形態において、ポインタの特性を有するデータ値が、上書きされることなく、メモリダンプ内に保持され、潜在的ポインタ値と異なるよう、上書き値が選択される。具体例として、値が上書きされた領域と、ヌルポインタを格納する領域との区別を可能にするよう上書き値を選択することができる。いくつかの実施形態において、上書き値は、上書きするデータ値の所定の関数として選択することができる。いくつかの実施形態において、上書き値は、ランダムに選択することができる。いくつかの実施形態において、コンピュータシステムは、トリアージダンプエンジンを使用して、コンピュータプログラムのクラッシュまたはハングに応じて、トリアージダンプを生成する。トリアージダンプエンジンの識別エンジンは、個人情報の特性を有する複数のデータ値を識別する。上書きエンジンは、各識別されたデータ値を、上書き値で上書きする。上書き値は、ヌルポインタ値としてコンピュータシステムによって使用された値に対応しない可能性がある。生成されると、トリアージダンプは、外部サーバに送信され得る。いくつかの実施形態において、上書き値は、上書きされるデータ値に応じて決定することができる。例えば、上書きされるデータ値が、第1の所定の範囲内にある場合、上書きエンジンは、第1の上書き値でデータ値を上書きすることができる。一方、上書きされるデータ値が、第2の所定の範囲内にある場合、上書きエンジンは、第2の上書き値でデータ値を上書きすることができる。いくつかの実施形態において、選択エンジンは、上書き値を判断する。選択エンジンは、乱数発生器を使用して、さまざまな上書き値を選択することができる。上書きされたデータ値および対応する上書き値は、データ値をどのように書き換えるかのマッピングを追跡するテーブルに格納することができる。上書き値を含むテーブルの部分は、外部サーバに送信され、ユーザのプライバシーを危険にさらすことなく、トリアージダンプを解析するために使用される追加情報を提供することができる。いくつかの実施形態において、サーバは、遠隔コンピュータからトリアージダンプを受信する。トリアージダンプは、プログラムのクラッシュおよびハングの原因を解析するのに有益である、ポインタデータを備える。トリアージダンプはまた、個人データの伝搬を防ぐため、上書き値で上書きされた潜在的個人情報を表す、書き換えられたデータ値を備える可能性がある。トリアージダンプはまた、データ値がヌルポインタ値を使用して決して書き換えられないので、書き換えられたデータから区別することができる、ヌルポインタデータを備える可能性がある。いくつかの実施形態において、サーバは、トリアージダンプのデータを書き換えるために使用される上書き値を備える値のリストを受信する。各上書き値は、問題が発生したプログラムのコールスタックを通じて、追跡することができる。これは、ソフトウェア開発者に実際のデータ値を明らかにすることなく、ソフトウェア開発者が、データ値を最初に使用したプログラム内の関数を識別することを可能にすることができる。データ値が個人情報に特性を有した場合、これにより、ユーザのプライバシーを保護する。トリアージダンプを生成、送信、および受信するためのいくつかの方法を、コンピュータ読取り可能記憶デバイスで格納された命令を実行するコンピューティングシステムのプロセッサによって実行することができる。以上が、添付の特許請求の範囲によって定義される非限定的な本発明の概要である。添付図面は縮尺通りに描かれることを意図していない。図面において、さまざまな図に示される各同一またはほぼ同一の構成要素は、同様の数字によって表される。見やすくするために、すべての図面におけるすべての構成要素にラベルづけしない可能性がある。<実施の形態の詳細な説明>発明者は、エラー報告システムの一部としてメモリダンプを収集するための改良技術が、ユーザのプライバシーおよび個人情報に対するリスクを高めること無く、エラーを診断するための有用な追加情報を提供することができることを認識および理解している。プライバシーを保護するために、エラー報告システムにより送信されたメモリダンプのあるデータ値は、そのデータ値が個人情報の特性を有するものである場合、書き換えることが必要となるであろう。書き換えには、上書き値でデータ値を上書きすることを含むことができる。パスワードもしくはクレジットカード情報などの個人データを書き換えることは、個人情報が解析に関係することが滅多に無いため、メモリダンプデータを解析するためのソフトウェア開発者の能力に影響することは無いであろう。従来のエラー報告システムは、特に、トリアージダンプを形成するよう構成された場合、個人情報を特定する任意の値を書き換えることができる。しかしながら、発明者はさらに、保持された他の情報を不明瞭にしない値でメモリダンプを書き換えることが有益であると認識している。それに応じて、上書き値は、保持されたどんな値とも異なるよう選択することができる。具体例として、上書き値は、ヌルポインタ値と書き換えられたデータ値とを区別するよう選択することができる。したがって、いくつかの実施形態において、ヌルポインタ値は、データ値を書き換えるための上書き値として使用されない。しかし、他の実施形態において、上書き値は、ポインタの有効値または値が格納された他のタイプのデータであるか、またはそうである可能性のある任意の値とは異なるよう選択することができる。発明者はさらに、それらの値がメモリダンプから回復できない場合でさえ、上書きされた値についての情報を保持するように、メモリダンプを書き換えることが有益であると認識している。それに応じて、上書き値は、上書きされた値を部分的に基にして選択することができる。しかしながら、上書きされた値が、上書き値から回復できないような方法を選択することもできる。いくつかの実施形態において、上書きされた値は、上書きされた値と上書き値との間の多対1の関係のため、回復することができない可能性がある。例えば、上書き値が、値の各範囲と関連づけられ、同じ値が、各範囲における任意の値を上書きするために使用された場合、そのような状況が発生する可能性がある。具体例として、異なる上書き値を使用して、大きな負の値、大きな正の値、および他の値を識別することができる。そのような上書き値割り当てスキームは、例えば、オーバーランを示すか、または実行エラーにある値を識別するため、クラッシュダンプの全解析をすることができる。いくつかの実施形態において、上書きされた値は、上書きされた値と上書き値との間のランダムな関係のため、回復することができない可能性がある。そのような状況は、値と上書き値との間のランダムマッピングが作成された場合に発生する可能性がある。そのようなマッピングは、メモリダンプ内の同じ値の複数のインスタンスを識別する際に有益である可能性があり、例えば、その変数の値を明らかにすることなく、コールスタックでの関数を通過した特定の変数を追跡するために使用することができる。上書き値が動的に判断された状況では、選択された1つまたは複数の上書き値は、エラーレポートの一部として、またはそれと共に通信され、エラーレポートの解析を容易にすることができる。例えば、ランダムマップ内の、ランダムに選択された値のセットは、それらが上書きする関連値無しに、通信することができる。図1は、トリアージダンプを、ソフトウェアユーザ115からソフトウェア開発者135に送信することができる、例示的ネットワーク環境100を示す。ソフトウェアユーザ115と関連したコンピュータシステム110は、クラッシュまたはハングしたプログラムを実行する可能性がある。プログラムは、任意のタイプのコンピュータプログラムとすることができる。例えば、アプリケーションプログラム、またはオペレーティングシステムプログラムとすることができる。場合によっては、オペレーティングシステムのカーネルと関連づけられたプログラムとしてもよい。しかし、エラー情報が収集される特定の構成要素は本発明にとって重要ではない。情報が収集されるエラーのタイプは、本発明に重要ではない。例えば、クラッシュは、プログラムが予期せず終了することを意味する。プログラム内のエラーが、カーネルの重要なコンポーネントを中断した場合、プログラムのクラッシュにより、コンピュータシステム110全体がクラッシュする可能性がある。他方で、ハングは、プログラムが動作し続ける場合でも、ユーザ入力に応答せず、フリーズを引き起こす。ハングおよびフリーズという用語は、時に、区別無く使用される。エラー情報は、クラッシュ、ハング、または他の任意の適切なタイプのエラーに対して収集することができる。これらのエラーは、当分野で既知であるような技術を使用することを含む、任意の適切な方法で検出することができる。いくつかの実施形態において、情報の収集を引き起こすエラーは、任意の予期しない、または意図しない結果となる可能性がある。例えば、プログラムが性能の問題に直面し、適切な応答が無い場合に、エラーが発生する可能性がある。プログラムのクラッシュおよびハングは、さまざまな理由に対し発生する可能性がある。例えば、開発者が説明できない不適切なデータ値が、クラッシュまたはハングをもたらす可能性がある。例えば、ヌルポインタを渡すことが、クラッシュの原因になる可能性がある。ラップアラウンドエラー、すなわち、値が、その変数型に対して許可された最大値を超え、マイナス値として解釈される場合、クラッシュまたはハングの原因となる可能性がある。本発明の実施形態は、クラッシュまたはハングに対する何らかの特定の理由に限定されない。プログラムがクラッシュまたはハングした場合、コンピュータシステム110は、トリアージダンプ140の生成を開始することができる。トリアージダンプ140は、ソフトウェア開発者135によって、クラッシュまたはハングの原因を解析するために使用することが可能である、コンピュータシステム110のメモリの小さな部分のダンプである。ダンプされたメモリの特定の部分は、コールスタックを保持するために使用されるメモリを含む可能性がある。トリアージダンプ140は、例えば、50KBよりサイズを小さくすることができる。いくつかの実施形態において、トリアージダンプ140は、10から20KBとすることができる。トリアージダンプに含まれるメモリの特定の部分は、当分野で既知であるような技術を使用することを含む任意の適切な方法で選択することができ、任意の適切なサイズにすることができる。トリアージダンプのサイズを小さくすることで、トリアージダンプ140を、ネットワーク120上で迅速および容易に送信することができる。コンピュータネットワーク120は、任意のタイプのネットワークとすることができる。いくつかの実施形態において、ネットワーク120は、インターネットである。トリアージダンプは、任意の適切な場所で受信することができ、この例では、ネットワーク120に接続されたサーバ150である。サーバ150は、複数のユーザからトリアージダンプを受信するよう構成することができる。この情報は、コンピュータ110ならびにエラーを同様に報告する他の同様なコンピュータで実行することができるコンポーネントで、1つまたは複数の起こり得る問題を識別するよう集約ならびに処理することができる。エラーが特定のソフトウェアのコンポーネントと関連する場合、エラー情報を、そのコンポーネントの開発者に提供することができる。それに応じて、ソフトウェア開発者135は、サーバ150から、エラーの指摘を受信することができる。ソフトウェア開発者135は、コンピュータ130を使用して、サーバ150に格納されたデータにアクセスし、エラーのソースを調べることができる。例えば、ソフトウェア開発者135は、ソフトウェアの1人または複数のユーザ115によって送信された1つまたは複数のトリアージダンプ140を解析し、トリアージダンプ140の生成を引き起こしたクラッシュまたはハングの原因を識別することができる。いくつかの実施形態において、ソフトウェア開発者135は、さらなる情報およびより詳細な解析を必要とするソフトウェアでの問題があると判断することができる。ソフトウェア開発者135は、同様のクラッシュまたはハングが発生した場合、コンピュータ110がユーザ115に、より詳細なメモリダンプをソフトウェア開発者135に送信するための許可を求める可能性があると、ユーザのコンピュータ110に通知することができる。例えば、ユーザ115は、個人情報を含む可能性がある、より大きなメモリダンプを送信するための許可を求められる可能性がある。ユーザが拒否した場合、より大きなメモリダンプは、送信されない。本発明の実施形態は、トリアージダンプ140またはより大きなメモリダンプの任意の特定の実装態様に限定されない。図2は、本発明を実現することができる適切なコンピューティングシステム環境200の例を示す。例えば、コンピューティング環境200は、ユーザのコンピュータ110、ソフトウェア開発者のコンピュータ130、またはエラー報告システムのサーバ150とすることができるコンピュータ210を含む。コンピューティングシステム環境200は、適切なコンピューティング環境の一例に過ぎず、本発明の使用または機能の範囲に何らかの限定を提案することを意図しない。コンピューティング環境200は、例示的オペレーティング環境200で示したコンポーネントの任意の1つまたは組合せに関する何らかの依存関係または要件を有すると解釈されるべきではない。本発明は、他の多数の汎用もしくは専用コンピューティングシステム環境もしくは構成で動作する。本発明と共に使用するのに適切である可能性のある周知のコンピューティングシステム環境および/または構成の例には、これらに限定されないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドもしくはラップトップデバイス、タブレット、携帯電話、マルチプロセッサシステム、マイクロプロセッサ型システム、セットトップボックス、プログラマブル民生用電子機器、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、および上記システムもしくはデバイスのいずれかを含む分散コンピューティング環境などある。コンピューティング環境は、プログラムモジュールなどの、コンピュータ実行可能命令を実行することができる。一般に、プログラムモジュールは、特定のタスクを実行するか、または特定の抽出データ型を実施する、ルーチン、プログラム、オブジェクト、コンポーネント、およびデータ構造など含む。本発明はまた、通信ネットワークを通じてリンクされた遠隔処理デバイスによってタスクが実行される、分散コンピューティング環境で実施することができる。分散コンピューティング環境では、プログラムモジュールは、メモリ記憶デバイスを含むローカルおよび遠隔コンピュータ記憶媒体に設置することができる。図2を参照すると、本発明を実現するための例示的システムは、コンピュータ210の形で汎用コンピューティングデバイスを含む。コンピュータ210の構成部品は、これらに限定されないが、処理ユニット220、システムメモリ230、およびシステムメモリを含むさまざまなシステム構成部品を処理ユニット220に結合するシステムバス221を含むことができる。システムバス221は、メモリバスもしくはメモリコントローラ、周辺バス、および任意のさまざまなバスアーキテクチャを使用するローカルバスを含む、任意のいくつかのタイプのバス構造体とすることができる。例えば、限定するものではないが、そのようなアーキテクチャには、業界標準アーキテクチャISAバス、マイクロチャネルアーキテクチャMCAバス、拡張ISAEISAバス、ビデオエレクトロニクス標準化協会VESAローカルバス、およびメザニンバスとしても知られる周辺構成機器相互接続PCIバスがある。例示的システムはまた、システムオンチップSoCを使用して実現してもよい。典型的に、コンピュータ210は、さまざまなコンピュータ読取り可能媒体を備える。コンピュータ読取り可能媒体は、コンピュータ210によりアクセスすることができ、揮発性ならびに不揮発性媒体、リムーバブルならびに非リムーバブル媒体を含む、任意の利用可能媒体とすることができる。例えば、限定するものではないが、コンピュータ読取り可能媒体は、コンピュータ記憶媒体および通信媒体を備えることができる。コンピュータ記憶媒体は、コンピュータ読取り可能命令、データ構造、プログラムモジュール、もしくは他のデータなどの情報の記憶のための任意の方法もしくは技術で実現される、揮発性ならびに不揮発性、リムーバブルならびに非リムーバブル媒体を含む。コンピュータ記憶媒体は、これらに限定されないが、RAM、ROM、EEPROM、フラッシュメモリ、もしくは他のメモリ技術、CD-ROM、ディジタル多用途ディスクDVD、もしくは他の光学ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、もしくは他の磁気記憶デバイス、または、所望の情報を格納するために使用することができ、コンピュータ210によりアクセスすることが可能な任意の他の媒体を含む。通信媒体は、典型的に、コンピュータ読取り可能命令、データ構造、プログラムモジュール、または搬送波、データ信号、もしくは他の搬送機構などの、変調データ信号における他のデータを実施し、任意の情報送達媒体を含む。変調データ信号という用語は、信号内の情報を符号化するように設定または変更された1つまたは複数の特性を有する信号を意味する。例えば、限定するものではないが、通信媒体は、有線ネットワークもしくは直接有線接続などの有線媒体、および音響、RF、赤外線、ならびに他の無線媒体などの無線媒体を含む。上記のいずれの組合せもまた、コンピュータ読取り可能媒体の範囲内に含まれるべきである。システムメモリ230は、リードオンリーメモリROM231およびランダムアクセスメモリRAM232などの揮発性および/または不揮発性メモリの形式のコンピュータ記憶媒体を含む。トリアージダンプ140は、ROM231もしくはRAM232のいずれか、または両方に格納されたデータを備えることができる。スタートアップ中などの、コンピュータ210内の要素の間での情報のやりとりを助ける基本ルーチンを含む、基本入出力システム233BIOSは、典型的に、ROM231に格納される。典型的に、RAM232は、処理ユニット220にすぐにアクセス可能であり、および/または処理ユニット220によって現在実行されている、データおよび/またはプログラムモジュールを備える。例えば、限定するものではないが、図2は、オペレーティングシステム234、アプリケーションプログラム235、他のプログラムモジュール236、およびプログラムデータ237を示し、それらのいずれも、クラッシュもしくはハングし、コンピュータ210がトリアージダンプを生成するという結果を招く可能性がある。オペレーティングシステムOS234のさらなる態様は、図3と関連して説明する。コンピュータ210はまた、他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピュータ記憶媒体を含む可能性がある。例に過ぎないが、図2は、非リムーバブル、不揮発性磁気媒体に読み書きするハードディスクドライブ241、リムーバブル、不揮発性磁気ディスク252に読み書きする磁気ディスクドライブ251、およびCD-ROMもしくは他の光学媒体などのリムーバブル、非不揮発性光学ディスク256に読み書きする光学ディスクドライブ255を示す。例示的オペレーティング環境で使用することができる他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピュータ記憶媒体は、これらに限定されないが、磁気テープカセット、フラッシュメモリカード、ディジタル多用途ディスク、ディジタルビデオテープ、ソリッドステートRAM、およびソリッドステートROMなどを含む。ハードディスクドライブ241は、典型的に、インターフェース240などの非リムーバブルメモリインターフェースを通じてシステムバス221に接続され、磁気ディスクドライブ251および光学ディスクドライブ255は、典型的に、インターフェース250などのリムーバブルメモリインターフェースによってシステムバス221に接続される。上記した、図2に示したドライブおよびそれらに関連するコンピュータ記憶媒体は、コンピュータ読取り可能命令、データ構造、プログラムモジュール、およびコンピュータ210に対する他のデータを記憶することを提供する。図2では、例えば、ハードディスクドライブ241は、オペレーティングシステム244、アプリケーションプログラム245、他のプログラムモジュール246、およびプログラムデータ247を格納するものとして示される。これらのコンポーネントは、オペレーティングシステム234、アプリケーションプログラム235、他のプログラムモジュール236、およびプログラムデータ237と同じか、または異なるものとすることができることに留意されたい。オペレーティングシステム244、アプリケーションプログラム245、他のプログラムモジュール246、およびプログラムデータ247は、少なくとも、それらが異なるコピーであることを示すために、本明細書では異なる番号を付与する。ユーザは、コマンドおよび情報を、コンピュータ210に、キーボード262および、一般に、マウス、トラックボール、もしくはタッチパッドと称されるポインティングデバイス261などの入力デバイスを通じて入力することができる。他の入力デバイス図示せずには、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、パラボラアンテナ、またはスキャナなどを含むことができる。これらおよび他の入力デバイスは、しばしば、処理ユニット220に、システムバスに結合されたユーザ入力インターフェース260を通じて接続されるが、パラレルポート、ゲームポート、もしくはユニバーサルシリアルバスUSBなどの他のインターフェースもしくはバス構造によって接続することができる。モニタ291または他のタイプの表示デバイスはまた、システムバス221に、ビデオインターフェース290などのインターフェースを介して接続される。モニタの他に、コンピュータはまた、出力周辺インターフェース295を通じて接続することができる、スピーカ297およびプリンタ296などの他の周辺出力デバイスを備えることができる。コンピュータ210は、遠隔コンピュータ280などの1つまたは複数の遠隔コンピュータへの論理接続を使用して、ネットワーク環境で動作することができる。遠隔コンピュータ280は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、もしくは他の共通ネットワークノードとすることができ、典型的に、コンピュータ210に関連して上記した要素の多くまたはすべてを含むが、メモリ記憶デバイス281だけは、図2に図示した。図2に示した論理接続は、構内ネットワーク又はローカルエリアネットワークLAN271および広域ネットワーク又はワイドエリアネットワークWAN273を含むが、他のネットワークを含んでもよい。そのようなネットワーキング環境は、オフィス、企業規模コンピュータネットワーク、イントラネット、およびインターネットにおいて一般的である。図1に示したように、遠隔コンピュータ280は、ソフトウェア開発者のコンピュータ130またはサーバ150とすることができる。LANネットワーキング環境で使用する場合、コンピュータ210は、LAN271に、ネットワークインターフェースまたはアダプタ270を通じて接続される。WANネットワーキング環境で使用する場合、コンピュータ210は、典型的に、モデム272、または他の手段を備え、インターネットなどのWAN273上で通信を確立する。モデム272は、内蔵もしくは外付けとすることができ、システムバス221に、ユーザ入力インターフェース260または他の適切な機構を介して接続することができる。ネットワーク化環境において、コンピュータ210に関連して示したプログラムモジュールまたはその一部は、遠隔メモリ記憶デバイスに格納することができる。例えば、限定するものではないが、図2は、メモリデバイス281上にあるような、遠隔アプリケーションプログラム285を示す。示したネットワーク接続は例示であり、コンピュータ間で通信リンクを確立する他の手段を使用することができることが理解されよう。図3は、エラー報告システムのいくつかの実施形態で使用することができる、オペレーティングシステムOS234のいくつかのコンポーネントを示す。例えば、オペレーティングシステムOS234は、アプリケーションプログラム235などのソフトウェアがRAM232と相互通信して使用する方法を制御することができる、メモリマネージャ390を有することができる。メモリマネージャ390は、RAM232のどの部分を、所与のアプリケーションプログラム235に割り当てるかを制御することができる。OS234はまた、トリアージダンプエンジン310を有し、トリアージダンプを生成することができる。いくつかの実施形態において、トリアージダンプエンジン310は、メモリマネージャ390の一部としてもよい。いくつかの実施形態において、トリアージダンプエンジン310は、処理ユニット220で実行する1つまたは複数のソフトウェアプログラムの実行中に直面した問題に基づき、トリアージダンプの生成を開始する。本発明の実施形態は、任意の特定のタイプの問題に限定されない。例えば、プログラムでの問題は、プログラムのクラッシュによるものである可能性があり、プログラムは、不意に実行を終了する。いくつかの実施形態において、問題は、プログラムのハングである可能性があり、プログラムは、実行を続けるが、ユーザ115からのコマンドに応じて停止する。いくつかの実施形態では、クラッシュまたはハングより深刻さの少ない問題に基づきトリアージダンプの生成を開始する可能性がある。例えば、OS234のコンポーネント、アプリケーションプログラム235、または他のプログラムモジュール236などの、コンピュータ210で実行するプログラムは、トリアージダンプエンジン310に指示して、任意の事前にプログラムした条件に基づいて、ダンプを開始することができる。トリアージダンプエンジン310は、個人情報の特性を有する、したがって、書き換えるべき、システムのメモリ内のデータ値を識別する識別エンジン320を備えることができる。データ値が個人情報であるのか、それともプライバシーに対する懸念の無いデータなのかを確認することは困難である可能性がある。これは、いくつかの実施形態において、メモリダンプの処理が実行されることが皆無かそれに近いためである。ユーザのコンピュータ110でメモリダンプを解析することは、かなりのリソースを必要とし、パフォーマンスの低下をもたらす可能性がある。したがって、処理および解析は、ソフトウェア開発者のコンピュータ130にオフロードされる。しかしながら、メモリダンプデータの処理をオフロードすることは、ユーザのコンピュータ110が、本質的に、非常に少ないコンテキストで数字の文字列を見るという結果になる。この数字の文字列から、識別エンジン320は、特定のデータ値が個人データであるということを確実に確かめることができない可能性がある。しかしながら、識別エンジン320は、特定のデータ値が、個人データの特性を有することを判断することができる可能性がある。任意の適切な基準を使用して、個人情報の特性を定義することができる。いくつかの実施形態において、個人情報は、他の識別可能な型ではないような値以外である値によって特徴づけられてもよい。例えば、いくつかの実施形態において、ポインタのような値は、ポインタが有効に指し示すことができるメモリアドレスの範囲内にそれらの値が入っているかどうかに基づいて識別することができる。他の値は、個人情報を特徴づけるものとして扱うことができる。しかしながら、個人情報の特性を有するデータ値を識別するいくつかの実施形態は、コンピュータ110の例示的メモリ400を図示する図4と関連して説明する。いくつかの実施形態において、メモリ400は、複数のメモリ領域を備え、それぞれが、アドレス450およびデータ値440と関連づけられる。本願において、メモリ領域はメモリロケーション等と言及されてもよい。メモリ領域の一部のみを図4に示し、メモリの実装態様は、図を簡単にするために簡易化した。例えば、各メモリ領域は、000から999の範囲でアドレスと関連づけられる。当業者は、実際のメモリ400内には非常に多くのメモリ領域が存在する可能性があり、さらに、メモリ領域が任意の適切な方法でアドレス指定される可能性があることを認識するであろう。例えば、メモリ領域は、32ビットまたは64ビットアドレスであるアドレスを有する可能性がある。当業者はまた、メモリ400は、OS234のメモリマネージャ390によって実現される仮想メモリである可能性があることを認識するであろう。例示目的のため、図4は、000から999の範囲の10進整数として各メモリ領域内に保持されるデータ値440を示す。しかしながら、本発明の実施形態は、そのことに限定されず、データ値440は、任意の適切な方法で、任意の適切な範囲の値を有して実現することができる。例えば、データ値440は、32ビットまたは64ビットアドレスとしてもよい。いくつかの実施形態において、データ値440のサイズは、時に、ワードサイズと称され、メモリ領域アドレス450のサイズと同じである。話を簡単にするために、すべてのメモリ領域に対するデータ値440のすべては示さない。しかしながら、データ値440の一部は、アドレス500から507を有するメモリ領域に示す。例えば、アドレス502のメモリ領域は、データ値203を保持する。ダンプしたメモリ400のメモリ領域は、トリアージダンプのサイズを減らすために、サイズを制限することができる。ダンプされるメモリ領域の制限は、任意の方法で実現することができ、本発明の実施形態は、何らかの特定の技術に限定されない。例えば、いくつかの実施形態において、クラッシュまたはハングしたプログラムと関連づけられたメモリのみがダンプされる。いくつかの実施形態において、トリアージダンプは、プログラムのコールスタック430を保持するメモリ400の一部に、またはトリアージダンプの生成を開始する結果となる問題に直面したプログラムに対するデータを保持するコールスタックの一部のみに制限することができる。しかし、ダンプされたメモリの量および選択される方法は、本発明では重要ではなく、当分野で既知の技術を使用してまたは任意の他の適切な方法で判断することができる。トリアージダンプを生成するためにダンプされるメモリの量にかかわらず、個人情報として特徴づけられた値は、識別エンジン320によって識別することができる。いくつかの実施形態において、識別エンジン320は、ポインタの特性を有するデータ値440を識別することができる。ポインタであるデータ値は、トリアージダンプを解析する処理において有益である。したがって、ポインタの特性を有するデータ値440は、トリアージダンプエンジン310によって書き換えられるべきではない。前述のように、ユーザのコンピュータ110は、メモリダンプの完全な解析を実行せず、非常に少ないコンテキストで数字の文字列としてダンプを見るだけである。したがって、識別エンジン320は、特定のデータ値がポインタであると確信して識別することができないが、特定のデータ値がポインタの特性を有すると判断することができる。データ値がポインタの特性を有すると判断することは、任意の適切な方法で行うことができる。例えば、データ値は、ポインタであるかのように扱うことができ、データ値が示すメモリ領域を調べることができる。例えば、データ値が、プログラムコード410、ライブラリコード420、またはコールスタック430と関連したメモリ領域を示す場合、データ値は維持され、上書きされない可能性がある。いくつかの実施形態において、データ値が、プログラムコード、ライブラリコード、またはコールスタックと関連したメモリ領域を示す場合、データ値は維持され、上書きされない可能性がある。いくつかの実施形態において、代替のまたは追加の関連データは、カーネルモードオブジェクトまたはヒープデータへのハンドルなどの、他のタイプのポインタを備えることができる。この技術を使用して保持されたデータ値のすべてが必ずしもポインタである必要はないが、メモリ領域がポインタを保持するかどうかは、許容可能な確実性のレベルで判断することができる。しかし、他の実施形態において、場合によると、ダンプデータのより完全な解析を実行するために、トリアージダンプで保持される値を判断するため、逆に、上書きされる値を判断するため、他の技術が使用される可能性があることを認識すべきである。いくつかの実施形態において、個人情報ではないことが明らかな変数は、書き換えずに残すことができる。例えば、グローバル変数および/または動的に生成されたモジュールは、トリアージダンプを解析する際に有益である可能性があるが、個人データを含むことはないであろう。一例として、図4は、アドレス501のメモリ領域におけるデータ値が003であることを示す。この値がポインタである場合、アドレス003のメモリ領域を指し示す。アドレス003のメモリ領域は、プログラムコード410と関連づけられる。したがって、認識エンジンは、アドレス501のメモリ領域を、ポインタの特性を有するものとして識別することができる。アドレス502のメモリ領域におけるデータ値は203である。この値がポインタである場合、アドレス203のメモリ領域を指し示す。アドレス203のメモリ領域は、ライブラリコード420と関連づけられる。したがって、識別エンジンは、アドレス502のメモリ領域を、ポインタの特性を有するものとして識別するであろう。アドレス504のメモリ領域におけるデータ値は502である。この値がポインタである場合、アドレス502のメモリ領域を指し示す。アドレス502のメモリ領域は、コールスタック430と関連づけられる。したがって、識別エンジンは、アドレス502のメモリ領域を、ポインタの特性を有するものとして識別するであろう。他方で、アドレス505のメモリ領域におけるデータ値は156である。この値がポインタである場合、アドレス156のメモリ領域を指し示す。アドレス156のメモリ領域は、ソフトウェア開発者135に関心のあるメモリ領域と関連しない。したがって、識別エンジンは、アドレス502のメモリ領域を、ポインタの特性を有するものとして識別しないであろう。いくつかの実施形態において、ポインタの特性を有さないメモリ領域は、個人情報の特性を有するメモリ領域として解釈される可能性がある。したがって、認識エンジンは、アドレス505のメモリ領域を、個人情報として識別する可能性があり、書き換える可能性がある。いくつかの実施形態において、トリアージダンプエンジン310は、識別エンジン320によって個人情報の特性を有すると判断されたデータ値を書き換えるための上書き値を選択するための選択エンジン330を備える。選択エンジンは、任意の適切な方法で、上書き値を選択することができる。いくつかの実施形態において、単一の上書き値を、すべてのデータ値に対して使用することができる。例えば、図4の簡易化されたメモリ400において、個人情報の特性を有すると識別されたデータ値のそれぞれは、上書き値999で上書きすることができる。そのような上書き値は、この具体例において、ポインタに対する値、またはヌルポインタの値に対応しないため、選択することができる。図5Aは、テーブル500として、図4のアドレス501から507のメモリ領域と関連づけられた、メモリアドレス510およびデータ値520を示す。アドレス503、505、および506のメモリ領域に対するデータ値は、個人情報の特性を有することが識別エンジンによって識別されたデータ値であることを示すために下線が引かれている。図5Bは、個人情報の特性を有するデータ値が、単一の上書き値999で書き換えられた場合の、トリアージダンプで見られるであろう値をデータ値550が有する、テーブル530を示す。当業者には、任意の上書き値を使用することができることは明らかかであろう。いくつかの実施形態において、上書き値は、ヌルポインタ値以外のものとすることができる。ヌルポインタ値は、コンピュータシステム210が、データの欠如を示すために使用する値である。ヌルポインタ値は、コンピュータシステムによって決定された任意の値とすることができ、任意の特定の数量に限定されない。例えば、図4および図5Aの例において、アドレス507のメモリ領域は、値000を備える。この例において、000は、ヌルポインタ値である。したがって、他のデータ値を書き換えるために使用される上書き値は、000にしてはいけない。ソフトウェア開発者135が、元々ヌルポインタ値であったデータ値を、書き換えられたデータ値と区別することができるよう制限する。当業者は、本発明の実施形態が、8個または16個の16進数字の16進値によってそれぞれ表すことができる、32ビットワードまたは64ビットワードであるデータ値を使用することができることを認識するであろう。例えば、32ビットシステムにおいて、32ビットすべてが1である場合、16進数0xFFFFFFFFによって表される。いくつかの実施形態において、すべてのデータ値を書き換えるための上書き値は、同じ16進数としてもよい。例えば、0xCCCCCCCCを、すべての書き換えに使用する所定の上書き値とすることができる。いくつかの実施形態において、選択された上書き値は、上書きするデータ値の関数とすることができる。このようにして、より多くの情報を、何らかの個人情報を送信することなく、ソフトウェア開発者135に伝えることができる。例えば、第1の範囲内のすべてのデータ値は、第1の上書き値で上書きすることができ、一方、第2の範囲内のすべてのデータ値は、第2の上書き値で上書きすることができる。この技術を使用する一実施形態は、図5Cにおけるテーブル570によって示される。この例において、書き換えられる1から149の範囲内のデータ値は、上書き値999で上書きされ、書き換えられる150から299の範囲のデータ値は、上書き値998で上書きされ、さらに、書き換えられる850から999の範囲のデータ値は、上書き値997で上書きされる。これらの上書きされた値590は、テーブル570に示される。いくつかの実施形態において、負の値、すなわち大きな負の値を表すデータ値が、特定の値で書き換えられた場合、ソフトウェア開発者135によって実行される解析の助けとなる可能性がある。これは、ソフトウェアにおけるラップアラウンドエラーを識別する助けとなるであろう。大きな負の値を識別するために使用される特定の基準は、ワードサイズおよび他のファクタに左右される可能性がある。しかし、一例として、特定の上書き値と関連づけられる大きな負の値は、閾値より大きい大きさを有するものとして識別される可能性がある。この閾値は、任意の適切な方法で選択することができる。しかし、具体例において、閾値は、コンピュータシステムが表すことのできる最も大きな負の値の15以内に、または、いくつかの実施形態において、10以内になるよう、選択することができる。同様の技術を使用して、大きな正の値を識別すること、および異なる上書き値を大きな正の値と関連づけることができる。いくつかの実施形態において、選択された上書き値は、メモリ領域と関連づけられたメモリ保護オプションの機能とすることができる。例えば、メモリ領域は、読取り専用、実行専用、実行ならびに読み取り、または任意の他のメモリ保護オプションであるメモリページに格納することができる。一例として、32ビットシステムは、上書き値0x00000010を使用して、読取り専用メモリに格納された個人情報と判断されたすべてのデータ値を書き換えることができる。同じシステムは、上書き値0x00000020を使用して、実行専用メモリに格納された個人情報と判断されたすべてのデータ値を書き換えることができ、それらのダンプされたデータ値を有するメモリ領域の数は、総メモリのごく一部に制限される。いくつかの実施形態において、選択エンジンは、乱数発生器335を使用して、ランタイムで上書き値を生成することができる。当業者は、乱数発生器335が、当分野で既知の技術を使用する任意の適切な方法で実現することができることを理解するであろう。例えば、乱数発生器335は、選択エンジン330のコンポーネントとすることができ、または、選択エンジンによって、乱数をもたらすために呼び出されるOS234のコンポーネントとすることができる。当業者はまた、乱数発生器335を、擬似乱数発生器、または擬似乱数発生器を提供する任意のコンポーネントとしてもよいことを理解するであろう。いくつかの実施形態において、異なる乱数が、書き換えられた各データ値に対して選択される。乱数を、特定の範囲の値に制限することもまた有益であろう。例えば、図4の例において、上書き値は、900から999の範囲に制限することができる。したがって、書き換えられる各データ値に対して、選択エンジン330は、特定の範囲内で値をランダムに生成し、上書き値として使用する。このことは、いくつかの実施形態で、上書き値が、トリアージダンプ生成処理において書き換えられなかったデータ値のいずれとも一致しないことを保証することができる。上書き値が、書き換えられなかったトリアージダンプにおけるデータ値のいずれとも一致しないことを保証することは、任意の適切な方法で行うことができる。例えば、乱数発生器からの値は、フィルタされて、書き換えられなかったトリアージダンプ値のいずれとの衝突も避けることができる。同じデータ値の各インスタンスに対して同じランダムな上書き値を使用することによって、より多くの情報を、ソフトウェア開発者135にもたらすことができる。例えば、この方法で生成した情報は、ソフトウェア開発者135が、コールスタックによりデータを追跡すること、およびソースで問題を識別することの助けとすることができる。同じランダムな上書き値は、書き換えられたデータ値、およびデータ値が上書きされたランダムな上書き値の追跡を続けることによって選択することができる。この情報は、任意の適切な方法でマッピングすることができる。例えば、データ値およびランダムな上書き値は、テーブルに格納することができる。したがって、選択エンジン330が、書き換えるべき次のデータ値に直面すると、選択エンジンは、まず、テーブルをチェックし、データ値が以前に書き換えられたかどうかを判断する。その場合、次いで、テーブルで示された同じランダムな上書き値を使用して、次のデータ値を書き換える。そうでなければ、新しいランダムデータ値を選択して、テーブルに追加する。ユーザ115のプライバシーは、この方法で、依然として維持され、というのも、全マッピング情報を有するのはユーザのコンピュータ110のみだからである。トリアージダンプが外部サーバ150に送信されると、上書き値のみが送信され、元のデータ値は送信されない。したがって、ソフトウェア開発者135は、トリアージダンプの値が、ユーザの個人情報のいずれも明らかにすることなく、書き換えられたと知らされる。トリアージダンプエンジン310は、個人情報の特性を有すると判断されたデータ値を、選択エンジン330によって選択された上書き値で実際に上書きするための上書きエンジン340を備えることができる。データ値を上書きすることは、任意の適切な方法で実行することができる。例えば、データ値は、まず、別々のファイルに対してダンプされ、次いで、ファイル内で上書きされてもよい。しかし、他の手法を使用してもよい。いくつかの実施形態において、例えば、上書きは、メモリ400内で直接実行してもよく、または、データ値をファイルにコピーしている際に実行してもよい。前述のように、ヌルポインタ値と同じ値を有するデータ値を維持するために有益である可能性がある。したがって、ヌルポインタ値が、コンピュータOS234によって定義されたように、ポインタの特性に合うよう扱われた場合でさえ、ヌルポインタ値を保持することができる。例えば、32ビットシステムにおいて、ヌルポインタ値は、0x00000000とすることができる。トリアージダンプエンジン310は、トリアージダンプをコンピュータシステム110の外部に送信するために、通信エンジン350を備えることができる。通信エンジンは、任意の適切な方法で動作することができる。例えば、通信エンジンは、トリアージダンプを、当分野で既知のエラー報告技術を使用して、外部サーバ150に送信することができる。サーバ150は、ソフトウェア開発者135と関連づけることができる。図6を参照すると、トリアージダンプを生成するための実施形態の方法についてのフローチャートを示す。この方法は、トリアージダンプエンジン310、または任意の他の適切なコンポーネントにより実行することができる。方法600は、602で、トリアージダンプの生成を始めることによって開始する。トリアージダンプの生成は、任意の適切な方法で開始することができる。いくつかの実施形態において、コンピュータシステム110において発生する何らかの条件に対する応答により開始する。例えば、条件とは、処理ユニット220で実行するソフトウェアでの何らかの種類の問題である可能性がある。問題とは、プログラムのクラッシュまたはハングである可能性がある。そのような条件は、当分野で既知の技術を使用して検出することができる。しかしながら、本発明の実施形態は、任意の特定の開始ステップに限定されない。方法600は、動作604で続けることができ、識別エンジンが、保持対象である、メモリ内に格納されたデータ値を識別する。この例において、値は、ポインタの特性を有するかどうかに基づいて識別される。ポインタであるデータ値は、後にトリアージダンプの解析をするために有益であり、そのため、この例では書き換えない可能性がある。識別するための任意の適切な方法を使用することができる。例えば、データ値がポインタである場合に、データ値が指し示す位置をテストする上述の技術を使用することができる。いくつかの実施形態において、ポインタとして解釈された場合のデータ値が、トリアージダンプ生成を開始したソフトウェアプログラムの現在状態に関連すると判断されたメモリの部分を指し示す場合、データ値は、ポインタの特性を有すると識別される可能性がある。関連するデータ値は、プログラムコード、ライブラリコード、またはコールスタックと関連づけられたデータである可能性がある。いくつかの実施形態において、関連するデータは、他のポインタ、カーネルモードオブジェクトに対するハンドル、またはヒープデータを備えることができる。方法600は、動作606で続けることができ、識別エンジン320が、個人データの特性を有する、メモリ内に格納されたデータ値を識別する。個人情報であるデータ値は、後の解析に有益である可能性はなく、ユーザのプライバシーを保証するために書き換えることができる。識別するための任意の適切な方法を使用することができる。例えば、動作604においてポインタの特性を有すると識別されなかった、または保持対象と識別されなかったデータ値は、個人データの特性を有すると識別することができる。方法600は、動作608で続けることができ、選択エンジン330により、識別したデータ値を書き換える上書き値を選択する。上書き値を選択するための任意の適切な方法を使用することができる。例えば、上書き値を選択するための上記技術のいずれかを使用することができる。いくつかの実施形態において、同じ上書き値を、すべてのデータ値に対して使用することができる。他の実施形態において、上書き値は、上書きされるデータ値に基づく可能性がある。いくつかの実施形態において、上書き値は、乱数発生器を使用して、ランダムに選択される。方法600は、動作610で続けることができ、上書きエンジン340が、動作608で選択された上書き値で、個人データの特性を有すると識別された各データ値を上書きする。上書きするための任意の適切な方法を使用することができる。例えば、前述のように、上書きは、別々のトリアージダンプファイルにおいて、またはメモリ400自体において、行うことができる。方法600は、動作612で続けることができ、通信エンジンが、生成したトリアージダンプを、外部サーバに送信する。送信するための任意の適切な方法を使用することができる。例えば、前述のように、トリアージダンプは、コンピュータネットワーク120上で送信することができる。いくつかの実施形態において、トリアージダンプは、ディスク上に配置することができ、任意の適切な方法で、開発者に配信することができる。他の例において、トリアージダンプは、ソフトウェア開発者によって使用されるコンピュータで生成することができ、したがって、トリアージダンプが生成されたのと同じコンピュータで直接格納することができる。方法600は、トリアージダンプをソフトウェア開発者に送信した後、動作614で終了する。図6は、トリアージダンプファイルを生成するために使用することができる方法の一例であるが、他の方法を使用してもよいことを認識すべきである。トリアージダンプを生成するための他の例示的方法700を、図7のフローチャートで示す。動作702で、識別エンジンが、上書きするデータ値を決定することができる。上記のように、この動作702は、任意の適切な方法で実現することができる。方法700は、動作704で続けることができ、識別されたデータ値が、以前に上書きされたデータ値と比較される。識別されたデータ値が、以前に書き換えられなかった場合、上書き値は、動作706で、データ値に対して決定される。この決定706は、任意の適切な方法で実現することができる。例えば、乱数発生器を使用して、ランダムな上書き値を生成することができる。いくつかの実施形態において、ランダムな上書き値は、所定の範囲の値となるよう制限することができ、および/または他の方法で制限することができ、各上書き値が、上書きされるただ1つの値に対応することを保証する。上書き値が動作706で決定されると、方法700は、動作708で続けることができ、決定された上書き値が、データ値と共にテーブルに格納され、その結果、トリアージダンプエンジン310は、以下に説明するように、動作704を実現する後続の繰返しにおいて、データ値を検索することができる。動作704で、トリアージダンプエンジン310によってデータ値が以前に書き換えられたと判断された場合、方法700は動作710で継続し、特定のデータ値に対して以前に使用された上書き値が、コンピュータのメモリに格納されたテーブル内で検索され、トリアージダンプエンジン310によって維持される。データ値が以前に書き換えられなかった場合の動作708、またはデータ値が以前に書き換えられた場合の動作710のいずれかの後、方法700は動作712で継続する。動作712で、上書きエンジン340は、データ値を、決定した上書き値で上書きし、その上書き値は、動作710におけるテーブルからか、または動作706において新しい上書き値を生成することによって決定される。方法700は、動作714で継続し、書き換える必要があるデータ値がまだあるかどうかを判断する。トリアージダンプの生成を完了する前に書き換える必要のあるデータ値がまだあると判断した場合、方法700は動作702に戻り、上述の動作をさらに繰り返す。動作714で、書き換える必要のあるデータ値がもう無いと判断されると、本方法は動作716に続き、生成したトリアージダンプを、ソフトウェア開発者によって解析するために、外部サーバに送信する。本方法は、その後、動作718で終了する。図6および図7と関連して説明した上記方法の実施形態は、本明細書で説明した動作のそれぞれ、およびすべてを実行するために制限されない。本方法のすべての動作は、上記したそのままの順序で実行する必要はない。例えば、いくつかの実施形態では、動作606において個人データの特性を有するデータ値を識別した後、動作604でポインタの特性を有するデータ値を識別することができる。他の実施形態において、ポインタの特性を有するデータ値を識別する動作604を全く実行しなくてもよい。当業者は、上記実施形態が、本発明の態様を使用する方法の特定の例に過ぎないことを理解するであろう。上記のように、データ値を書き換える目的は、トリアージダンプのサイズを減らすためではなく、ソフトウェアユーザのプライバシーを保護することであることにも留意すべきである。しかしながら、トリアージダンプの書き換えは、圧縮を使用した場合、トリアージダンプのサイズを減らすことができる。トリアージダンプは、当分野で既知の、任意の適切な方法で圧縮することができる。したがって、本発明の少なくとも1つの実施形態のいくつかの態様を説明したが、種々の変更、修正、および改良が当業者には容易に行えるであろうことを理解されたい。そのような変更、修正、および改良は、本開示の一部であることが意図され、さらに本発明の精神および範囲内にあることが意図される。さらに、本発明の利点を示したが、本発明のすべての実施形態が記載した利点のすべてを必ずしも含まないことが理解されるべきである。いくつかの実施形態は、本明細書およびいくつかの例において利点として説明した特徴のいずれかを実施しない可能性がある。したがって、上記説明および図面は、例に過ぎない。上述した本発明の実施形態は、任意の多数の方法で実現することができる。例えば、本実施形態は、ハードウェア、ソフトウェア、またはそれらの組合せを使用して実現することができる。ソフトウェアで実現する場合、ソフトウェアコードは、単一のコンピュータ内に設けられるか、または複数のコンピュータ間に分散される、任意の適切なプロセッサ、またはプロセッサの集合で実行することができる。そのようなプロセッサは、集積回路部品内に1つまたは複数のプロセッサを有する、集積回路として実現してもよい。しかし、プロセッサは、任意の適切なフォーマットで、回路を使用して実現してもよい。また、本明細書で概説したさまざまな方法または処理は、さまざまなオペレーティングシステムまたはプラットフォームの任意の1つを使用する1つまたは複数のプロセッサで実行可能なソフトウェアとしてコーディングすることができる。さらに、そのようなソフトウェアは、多くの適切なプログラミング言語および/またはプログラミングもしくはスクリプティングツールのいずれかを使用して書いてもよく、またフレームワークもしくは仮想マシンで実行される実行可能な機械語コードもしくは中間コードとしてコンパイルすることができる。プログラムまたはソフトウェアという用語を一般的な意味で本明細書において使用する場合、上記のような本発明のさまざまな態様を実現するために、コンピュータもしくは他のプロセッサをプログラムするために使用することができる、任意のタイプのコンピュータコードもしくはコンピュータ実行可能命令のセットのことを意味する。さらに、本実施形態の一態様によれば、本発明の実行方法が実行された場合に、1つまたは複数のコンピュータプログラムは、単一コンピュータもしくはプロセッサ上にある必要はないが、本発明のさまざまな態様を実施するために、多数の異なるコンピュータもしくはプロセッサ間で、モジュラ方式で分散させてもよいことを認識すべきである。コンピュータ実行可能命令は、1つまたは複数のコンピュータまたは他のデバイスによって実行される、プログラムモジュールなどの、多くの形式をとることができる。一般に、プログラムモジュールは、特定のタスクを実行するか、または特定の抽出データ型を実施する、ルーチン、プログラム、オブジェクト、コンポーネント、およびデータ構造など含む。典型的に、プログラムモジュールの関数は、さまざまな実施形態において要望されるように組み合わせるか、または分散することができる。また、データ構造は、任意の適切な形式で、コンピュータ読取り可能媒体に格納することができる。図面を簡単にするために、テーブルなどのデータ構造は、データ構造内の位置を通じて関連したフィールドを有するよう示すことができる。そのような関連は、フィールドに対する記憶領域を、フィールド間の関連を伝えるコンピュータ読取り可能媒体内の位置に割り当てることによって、同じように達成してもよい。しかしながら、任意の適切な機構を使用して、データ構造のフィールドにおける情報間の関連を確立することができ、ポインタ、タグ、または、データ要素間の関連を確立する他の機構の使用によるものを含む。本発明のさまざまな態様は、単独で、組み合わせて、または上記した実施形態において具体的に説明していないさまざまな構成で使用することができ、したがって、その用途は、上記した、または図面に示した構成要素の詳細および構成に限定されない。例えば、一実施形態において説明した態様は、他の実施形態で説明した態様と、任意の方法で組み合わせることができる。また、本発明は、少なくとも1つの例を提供した方法として実施することができる。本方法の一部として実行した動作は、任意の適切な方法で配列することができる。それに応じて、実施形態は、図示とは異なる順序で動作を実行するよう構成することができ、例示的実施形態では連続的な動作として示したが、いくつかの動作を同時に実行することを含むことができる。クレーム要素を修飾するための請求項における第1の第2の第3のなどのような順序を表す用語の使用は、それ自体によって、1つの方法の動作を実行する他のもしくは時間的順序にわたる1つのクレーム要素の何らかの優先度、優先順位、または順序を意味するものではないが、単にラベルとして使用され、順序を表す用語の使用を別にすればある名前を有する1つのクレーム要素を、同じ名前を有する他の要素と区別し、クレーム要素を区別する。また、本明細書で使用される表現および用語は、説明の目的のためであり、限定するものとみなされるべきではない。本明細書での含む備えるまたは有する含有する伴うおよびそれらのバリエーションの使用は、その後に列挙される項目およびその等価物、ならびに追加項目を包含することを意味する。