問題の追跡にFogbugzを使用しており、FogbugzのXMLAPIの周りにC++ラッパーを作成している最中です。
ベストプラクティスは、「スカウト」フィールドを使用して、類似/同じクラッシュがカウントされるだけで、再度報告されないようにすることです。そのためには、クラッシュの特定の原因に対する一意の文字列が必要です。
Win32の場合-dmpファイルまたは他のクラッシュハンドラーを取得した後、クラッシュの一意の文字列を作成するための良い方法は何ですか?(dmpファイルを作成してfogbugzサーバーに送信します)
以前の投稿/記事などで、Joelはさまざまな提案をしましたが、それらの多くは、リフレクションを使用し、取得が難しいか取得できない多くの情報を持っているC#のような言語に頼っています。
他の人は、スタックトレースや、fogbugzにスカウトエントリを作成するための他のものなどを入手しましたか?
編集明確にするために-すべてのインシデントに一意のIDは必要ありません-同じコードパスを持つクラッシュが発生する可能性があります。それを捉えたい。コードに含まれる最後の数個のスタック呼び出し(win32 DLLからの呼び出しではない)を取得することを考えていましたが、これを実行する方法がわかりません。
すべてのクラッシュを一意として報告するのは正しくありません。同じケースですべてのクラッシュを報告するのは正しくありません。クラッシュの原因となるシナリオを繰り返すさまざまなユーザーは、同じインシデントにマッピングする必要があります。
編集
私たちが望んでいるのは、スタックにあるものに基づいた、クラッシュの一般的な「シグネチャ」です。同様のスタックは同じ署名を持つ必要があります。たとえば、アプリにある上位5つのメソッドを取得してから、最初の呼び出し(存在する場合)をMSDLLにします。これはおそらく署名には十分であり、「同じ」クラッシュを相関させる可能性があります。
では、スタック上のメソッドのリストをどのように取得するのでしょうか。そして、それらが自分のアプリからのものか、別のDLLからのものかをどのように判断できますか?
編集-注ミニダンプを作成し、スカウトの説明としてfogbugzに送信できるように、例外ハンドラーで「バケットID」/署名を作成します。または、アプリの次の起動時にダンプをロードし、生成した署名を付けて送信することもできます。