1

サーバー上で 24 時間実行される小さな MFC アプリケーションを開発しました。(Windows Server 2008 R2、x64)

ミニダンプ ファイルが適切に作成されて動作しているかどうか、および WinDbg で動作するかどうかを確認するために、意図的にアプリをクラッシュさせました。

ここで私がした方法。

0:000> .symfix c:\symbols
0:000> .sympath+ C:\Projects\*********\x64\Release
0:000> .reload
0:000> !analyze -v 
-> Works! I can see full call stack and the line where the error occured!

しかし、ローカル ラップトップ (Windows XP、x86) で同じことを行うと、コール スタック テキストで確認できるのは、以下のような非常に基本的な情報だけです。(デバッグするためにどの行を見ればよいかも示していません。)

STACK_TEXT:  
0012fd60 0040695c 00000004 dd0fbe7e 00d67d10 **************!CWnd::RunModalLoop+0xf7
0012fdac 004010e0 dd0fbcce 0056bae8 0056bae8 **************!CDialog::DoModal+0x130
0012ff1c 0050e492 00380032 00000000 7ffde000 **************!**************::InitInstance+0xa0
0012ff30 004f7bd7 00400000 00000000 00020934 **************!AfxWinMain+0x48
0012ffc0 7c7e7077 00380032 002d0033 7ffde000 **************!__tmainCRTStartup+0x11a
0012fff0 00000000 004f7c2a 00000000 00000000 kernel32!BaseProcessStart+0x23
-> Meaningless information in this case b/c the error occurs in OnBnClicked function.

私はグーグルで数時間を費やしましたが、これに対する答えを探すのに迷っています。ラップトップ PC でのみ動作しないのはなぜですか?

何を確認すればよいですか?私は何が欠けていますか?どんなアイデアでも大歓迎です。前もって感謝します。

4

1 に答える 1

2

正しいソース行情報を含む適切なコール スタックを取得するには、プライベート シンボルを削除せずにラップトップからアクセスできる同じ pdb が必要です。また、いくつかのシンボルをキャッシュしc:\symbolsてこれらを同じにし、Windows シンボルを解決しているように見えますか?

ビジュアル C++ 設定をチェックして、pdbs からプライベート シンボルを削除していないことを確認してください。ブレークポイントを設定したり、シンボルを検索したり、クラッシュ分析を実行しようとすると、unable to verify the checksumまたは同様のメッセージであると警告される可能性があります。

また、アプリを 64 ビット サーバーで実行し、次に 32 ビット ラップトップで実行していることにも気付きました。正しいバージョンの WinDbg を実行しているかどうかが次の質問です。32 ビット バージョンと 64 ビット バージョンがあります。

また、どのバージョンのwindbgを使用していますか? 多くの場合、さまざまなバージョンにバグがあるため、ラップトップでサーバーと同じバージョンを実行しているかどうかを確認することをお勧めします。

于 2012-03-28T06:45:40.753 に答える