38

Visual Studio 2005 (バージョン 8.0.50727.762) での長時間のコンパイル中に、一部のプロジェクトのいくつかのファイルで次のエラーが発生することがあります。

fatal error C1033: cannot open program database 'v:\temp\apprtctest\win32\release\vc80.pdb'

(言及されたファイルは、vc80.pdbまたはvc80.idbプロジェクトの一時ディレクトリにあります。)

同じプロジェクトの次のビルドは成功します。同じファイルにアクセスする可能性のある他の Visual Studio は開いていません。

毎晩のコンパイルが不可能になるため、これは深刻な問題です。

4

13 に答える 13

23

これは私のサイトでもよく見られます。Peter Kaufmann によるこの説明は、私たちの設定に基づいて最も妥当なようです。

Visual Studio 2005 でソリューションをビルドすると、致命的なエラー C1033: プログラム データベース 'xxx\debug\vc80.pdb' を開けません。ただし、ビルドを 2 回目に実行すると、通常は成功します。

理由: ソリューション内の 2 つのプロジェクトが出力を同じディレクトリ (例: 'xxx\debug') に書き込んでいる可能性があります。[ツール] - [オプション]、[プロジェクトとソリューション] - [ビルドと実行] の [並列プロジェクト ビルドの最大数] 設定が 1 より大きい値に設定されている場合、これは、2 つのコンパイラ スレッドが同じファイルに同時にアクセスしようとしている可能性があることを意味します。競合の共有。解決策: プロジェクトの設定を確認し、2 つのプロジェクトが出力、ターゲット、またはあらゆる種類の中間ファイルに同じディレクトリを使用していないことを確認してください。または、迅速な回避策として、並行プロジェクト ビルド設定の最大数を 1 に設定します。CLAPACK ライブラリに付属の VS プロジェクト ファイルを使用しているときに、まさにこの問題が発生しました。更新: Tortoise SVN が「vc80.pdb」にアクセスする可能性があります。ファイルがバージョン管理下にない場合でも、上記のエラーが発生する可能性があります (これを報告してくれた Liana に感謝します)。ただし、すべてのプロジェクトで異なる出力ディレクトリが使用されていることを確認した後、問題を再現できなかったため、これを確認することはできません。

于 2008-09-24T13:25:25.343 に答える
23

アンチウイルスまたは同様のプログラムが書き込み時に pdb ファイルにアクセスしている可能性があります。このシナリオでは、アンチウイルスが最も疑われます。申し訳ありませんが、ショップでナイトリー ビルドを設定した過去の経験に基づいて、一般的なアドバイスしか提供できません。これらのいくつかは些細に聞こえるかもしれませんが、完成させるためにそれらを含めています.

  • 何よりもまず、白紙の状態から始めるようにしてください。つまり、ナイトリーを開始する前に、ビルドの出力ディレクトリを強制的に削除します。
  • ナイトリー マシンにウイルス対策、スパイウェア対策などのプログラムがある場合は、それらを削除することを検討してください。それができない場合は、obj フォルダーをプログラムの除外リストに追加します。
  • (オプション) VCBuild や MSBuild などのツールをナイトリーの一部として使用することを検討してください。マルチコア マシンを使用している場合は、MSBuild を使用する方がよいと思います。ナイトリーには IncrediBuild を使用し、リリースには MSBuild を使用していますが、あなたが説明した問題に遭遇したことはありません。

他に何も機能しない場合は、ビルドの開始から数時間後にウォッチドッグ スクリプトをスケジュールし、そのステータスを確認できます。ビルドが失敗した場合、ウォッチドッグはビルドを再起動する必要があります。これは醜いハックですが、何もないよりはマシです。

于 2008-09-24T13:26:11.067 に答える
10

PDB を使用する代わりに、デバッグ情報を C7 形式に切り替えます。

Project Options -> C/C++ -> General -> Debug Information Formatに設定しC7ます。

于 2013-08-18T08:01:41.773 に答える
6

これは通常、以前のデバッグの試みでデバッガが完全に終了していない場合に発生します。タスク マネージャーで vcjit というプロセスを探し、強制終了してからやり直してください。最悪のオプションはVisual Studioを再起動します。これで問題が解決するはずです。

于 2008-09-25T10:57:19.777 に答える
1

VS....の実行可能なファイルを右クリックしてみてください。[プロパティ]->[互換性]->[このプログラムを互換性モードで実行する:"オフ........]にチェックマークを付けます。

于 2011-05-05T01:51:44.187 に答える
1

Dropbox フォルダーにあるプロジェクトで作業しているときに、同様の問題が発生しました。Dropbox がファイルにアクセスしてファイルをサーバーにアップロードしていたため、システム トレイの Dropbox アイコンに小さな「同期中」アイコンが表示されているときに、このエラーがスローされることがわかりました。Dropbox の同期が完了するまでビルドを待っていたところ、毎回動作しました。

于 2014-03-21T16:02:53.917 に答える
1

私はちょうどこの問題に遭遇しました。Visual Studio は、開くことができないと不平を言っていましたvc100.pdb。を使用してこのファイルへの開いているファイル ハンドルを探しprocexpたところ、プロセスmspdbsrvに開いているファイル ハンドルがあることがわかりました。このプロセスを強制終了すると問題が修正され、コンパイルできました。

于 2015-02-09T17:31:47.963 に答える
1

今日この問題が発生しましたが、pdb へのパスにある非 ansi 文字が原因であることが判明しました。

私は vmware を介して Windows を使用しており、私のプロジェクトは共有の場所にありました: \vmware-host\Shared Folders\project

\Users\julian\project に移動すると、問題が解決しました。

于 2010-11-23T12:33:57.860 に答える
0

LinqToSql をまったく使用していますか? おそらく、この質問で尋ねたときに時々発生する奇妙なエラーに似ています: Visual Studio がアセンブリの読み込みに失敗する原因は何ですか?

于 2008-10-13T22:53:23.140 に答える
0

私は同じ問題を抱えています C1033: cannot open program database

シナリオ

私は2つのdllのparent.dllchild.dllを持っています。parent.dllプロジェクトをビルドしようとしていると同時に、ビジュアルスタジオデバッガーでchild.dllプロジェクトを添付したところ、エラーが発生しました C1033: cannot open program database

解決

デバッグを停止し、デバッガーに接続されているプロセスを強制終了します。プロジェクトを再構築します。

于 2016-04-29T05:31:39.897 に答える