2017-08-08 8 views
0

Windowsプログラミング環境を初めて使用しています。あなたが私を助けることができれば感謝します:pdbが一致していないか見つからない - ウィンドウでのデバッグ

私はTeamCityビルドサーバーで構築しているController.exeというアプリケーションがあります。アプリケーションのビルドは、exeファイルとpdbファイルを生成します。

デプロイメントマシンでController.exeを実行すると、クラッシュしてダンプが生成されます。アプリケーションで

私は次のようにダンピングクラッシュを有効にしている:

unsigned long stackSize = 16384; 
SetThreadStackGuarantee(&stackSize); 
SetUnhandledExceptionFilter(WriteLargeMiniDump); 

機能WriteLargeMiniDump()が正常にダンプを書き込みます。私はこれを知っています。Controller.exeを私の開発マシンで実行すると、ダンプが生成され、正常にオープンしてソースコードのクラッシュラインを見ることができるからです。

TeamCityサーバーで生成されたexepdbの場合、ダンプをデバッグできません。ダンプファイルをvisual studio 2015で開き、Debug with Native Onlyを試してみると、pdbがロードされていません。

pdbファイルが正しいかどうかを調べてみました。そこで私はDebugging Tools for windowssymchk.exeとしてダウンロードしました。

私はsymchk.exeを実行すると、それは次のエラーを与える:

SYMCHK: Controller.exe FAILED - Controller.pdb mismatched or not found 

SYMCHK: FAILED files = 1 
SYMCHK: PASSED + IGNORED files = 0 

Controller.pdbは私がTeamCityサーバーから生成exeをコピーした同じディレクトリにあります。

ここに何か不足していますか?

+0

何バイナリのファイルサイズはありますか?ここでネイティブのC++または.NETアセンブリについて話していますか?これは、コピーエラーやデュアル書き込みエラーのために.pdbが途切れてしまったような奇妙なエラーです。 –

+0

@ justin.m.chase 'exe'は約2MB、' pdb'は約15MBです – Monku

+1

タイムスタンプも見てください。ビルドがデバッグデータベースを生成しないように変更され、古いpdbをコピーしている可能性があります。 – IInspectable

答えて

0

私はこの問題を解決できました。問題は、プロジェクトの元の著者がpdbをSVNリポジトリにチェックインしていたことです。これはTeamCityです。したがって、生成されたexepdbと一致しませんでした。また、MSDNのドキュメントごとに、のビルド中に生成されたpdbを使用する必要があります。

pdbのビルド中に生成されたexeを使用して、dumpファイルをデバッグできました。

私はpdbファイルを理解する助けに重要なリンクは次のとおりです。https://www.wintellect.com/pdb-files-what-every-developer-must-know

関連する問題