4

今、私はクラッシュ情報を持っています:

TestAPPにより、モジュールXCrashReportTest.exe(0023:5763c230)でアクセス違反(0xc0000005)が発生しました。

Context:
EDI:    0x002aee0c  ESI: 0x002ad7f4  EAX:   0x00000000
EBX:    0x00000000  ECX: 0x57635670  EDX:   0x028c1d27
EIP:    0x5763c230  EBP: 0x002aee18  SegCs: 0x00000023
EFlags: 0x00010246  ESP: 0x002ad554  SegSs: 0x0000002b

Bytes at CS:EIP:                                                 
8b 08 52 50 8b 41 18 ff d0 8b 0d c8 e0 66 57 8b                  

Stack:                                                           
0x002ad554: 576504f7 002aee0c 002ad7f4 002ad570 ..eW..*...*.p.*. 
0x002ad564: 002aee0c 5763c201 002aee18 002ad59c ..*...cW..*...*. 
0x002ad574: 576490b1 5763c201 002aee0c 00000100 ..dW..cW..*..... 
0x002ad584: 002ad5f4 57648d9f 75785eaa 57668e70 ..*...dW.^xup.fW 
0x002ad594: 002aee0c 00000001 002ad604 5764d4d2 ..*.......*...dW 
0x002ad5a4: 002aee0c 57668e70 5763c201 00000000 ..*.p.fW..cW.... 
0x002ad5b4: 00000100 75785d2a 57668e5c 002aee0c ....*]xu\.fW..*. 
0x002ad5c4: 57668e4c 002add84 00000000 00000000 L.fW..*.........

XCrashReport [XCrashReport:例外処理とクラッシュレポート-パート1を参照してください

しかし、同じマシンで同じ* .exeを実行すると、EIPが異なる場合があります。そのため、コードのクラッシュ行をEIP(XCrashReportで説明されているメソッド:例外処理とクラッシュレポート-パート1)と一致させられない場合があります。スタック情報の使用方法がわかりません。

誰でも私を助けることができますか?

4

1 に答える 1

3

これを行うための唯一の合理的な方法は、クラッシュダンプをデバッガーにロードし、シンボル、つまり.pdbファイルを提供することです。pdbファイルには十分な情報がない可能性があるため、これは注意が必要な場合があります。Microsoftのような企業は、ローカル変数の名前やその他の詳細に関する情報を持たない公開PDBファイルを配布しています。完全な情報を持つPDBは、パブリックPDBと呼ばれます。

スタックが破損し、「制御が失われる」場合があります。コードはリターンアドレス、つまりガベージを取得し、この値をEIPにロードして、そこから命令の実行を開始します。このシナリオでは、2、3の「命令」を実行した後、すぐにクラッシュが発生します。

つまり、EIPが最初にコードを指しているかどうかを把握する必要があります。

于 2012-10-14T18:49:37.853 に答える