2011-08-02 18 views
12

I持って私の溶液中で、次の3つのプロジェクト: 1のC#ライブラリ 2. C++/CLIマネージコード 3. C++アンマネージコード++/CLIのコード

I私のC#プロジェクトで「アンマネージドコードデバッグを有効にする」をチェックし、両方のC++プロジェクトをデバッグ/ Win32でビルドしました。しかし、私はアンマネージドコードに踏み込むことはできません。私がF11でアンマネージドメソッドを呼び出すと、ランダム/間違ったコードが表示され、終了します。

私の単体テストが合格するため、アンマネージドコードが実行されることがわかります。

私には何が欠けていますか?

+1

ステップインしようとしているアンマネージコードの.pdbファイルがありますか? –

+0

管理されたプロセスを起動し、それを(何らかの手段で)一時停止し、管理されていないプロジェクトにブレークポイントを置き、[デバッグ - >プロセスのアタッチ]を選択し、管理対象プロセスを選択して管理プロセスを続行できます。 – Philipp

+0

@スティーブン:はい私は参照してください。vc90.pdb –

答えて

10

1)がチェックされていないアンマネージコードのデバッグを有効にします。あなたはすでにこれを修正しました。

2)EXEをx64または任意のCPUとして構築しました(x64は動作しますが、そうではありません)。私はあなたがすでにこれを修正したと思います。

3)「ちょうど私のコードは、」時々Cでのアンマネージコードのデバッグ(ツール、オプション、デバッガ、マイコードのみ)

4)不正なデバッグオプションでトラブルを起こしオンされた++プロジェクト設定

5)PDBファイルが見つからないか、破損しているか、または不一致です。デバッガで実行中にC++コードにブレークポイントを設定しようとすると、これを確認できます。ブレークポイントが中空の円に変わった場合、デバッグ情報に何か問題があります。デバッグモードで実行しているときに出力ウィンドウもチェックしてください。ロードされたシンボルが表示されます。

+0

私のために働いた、ありがとう! –

+2

@Arne、5人のうちのどれが働いたのですか? –

+0

私にとっては、「ちょうど私のコード」が問題の一部であったと思います。 –

3

この問題は、「ネイティブC++からC++/CLIへ」のような「別の」方法になっていますが、これは通常、デバッガがネイティブとネイティブの両方をデバッグすることになっているためです。マネージドコード。

通常私の場合、スタートアッププロジェクトの[設定プロパティ] - [デバッグ]で[自動]から[混在]に設定すると問題が解決します。私はそれがこれらのもののいずれかから来ているこの問題は持っていた

+0

私は 'Auto'から 'Mixed'に切り替えましたが、それは私を助けませんでした。 –

+0

私も。私のブレークポイントはヒットしますが、ローカル変数やウォッチウィンドウなどの変数に関する情報は得られません。 –

+0

私もこれを見ました。私がちょうどF5をデバッグしたり、C#EXEに接続すると、VSは混合デバッガをロードしたくありませんでした。私がデバッグするたびに、ネイティブと.NETの両方のデバッガが必要だと指定する必要がありました。 –