2013-05-07 22 views
9

VB6で書かれた多くのレガシーコンポーネントを使用している.NETアプリケーションがあります。ネイティブコードデバッガを使用してVB6コードをデバッグし、Visual Studio 2010でpdbファイルを生成できました.VS 2012(アップデート2を含む)にアップグレードした後、これを行うことはできません。メッセージ次Visual Studio 2012のVB6コードのデバッグ

モジュールウィンドウショー:

バイナリはデバッグ情報で構築されていませんでした。

また、出力ウィンドウにメッセージ次を見つけることができます。

モジュールは、記号なしで構築されました。

一致するシンボルファイルがこのフォルダに見つかりませんでした:私は手動でシンボルをロードしようとすると

、私はメッセージを以下取得します。

非常に同じdllまたはexeをVS 2010からデバッグするとうまく動作します。

有効にするオプションはありますか?

+0

タスクにVC++デバッガを使用していますか? –

+1

あなたの質問には答えられませんが、VS2010を使ってinterop VB6のデバッグについてもっと知りたいです!古い混合言語アプリの時間節約に似ています。 – tcarvin

+0

[この記事](http://blogs.msdn.com/b/robgruen/archive/2004/11/09/254602.aspx)のVS 2010でVB6をデバッグする方法の詳細を確認してください。 – Pecan

答えて

7

最後にVisual Studio 2012を使用してVB6コンポーネントのデバッグを有効にする方法を見つけました。要するに、[オプション] | [設定]をクリックして古いpdb形式を有効にする必要があります。デバッグ|編集して続ける|ネイティブの編集と続行を有効にしてから、通常はdllhost.exeにアタッチできます。

+1

これは古いVC6 C++プロジェクトでも機能しました。ありがとう! –

+0

VC++ 6、@EdBayiatesに感謝します。結局のところ、髪の毛が引っ張られ、組立と住所のマッピングが終わってから、有効で働きがいのある答えが得られました! – Hugo

1

VS2006はmsdia110.dllを使用してシンボルファイルを解読しているようですが、VSフォルダにDIA SDKサンプルがあり、VB pdbファイルを解析できるかどうかテストできます。それができない場合は、私は新しいバージョンのDIAが古いバージョンのpdbをサポートしていないと思います。

+0

サンプルをビルドし、pdbファイルを解析しようとしましたが、すべてが機能していました。また、C:¥Program Files(x86)¥Microsoft Visual Studio 11.0¥Common7¥Packages¥Debugger¥msdia110.dllを使用していることを確認しました。 – Pecan

+0

良いですが、VBがまだサポートされていればMicrosoftにバグを報告することをお勧めします。 – xwlan

7

私のマシン上で動作する解決策を見つけました(ScottGのpaid support requestに対するMicrosoftのコメントに感謝、Scott)。どうやら2010年以降のVisual StudioのデフォルトのデバッガはVB6のDLLを処理しませんが、ない古いデバッグ・エンジンを使用するチェックボックスがあります:

enter image description here

私はネイティブ編集を有効にして続行する必要はありませんでした。

+4

Visual Studio 2015でも動作します –

+0

はい私はこれがVS2015とVB6 COM DLLの私の解決策であることを確認できます。 – scipilot

+0

Visual Studio 2015が行末になることがあります。 Visual Studio 2017でVB6コードをデバッグする方法が見つかりませんでした。 –

0

[VS 2015ツール] - > [オプション] - > [デバッグ] - > [一般]で、[ネイティブ互換モードを使用する]を選択します。私はまだVB6をデバッグする必要がありますが、私はまだできることに感謝しています。

+0

「ネイティブ互換モードを使用する」が設定されているときにブレークポイントに問題があったことに注意してください。 'ネイティブ互換モードを使用する'のチェックを外すと、問題が修正されました。だから設定は問題がないわけではない。 –

関連する問題