2

SolidWorks Enterprise PDM アドインのデバッグに問題があります。EPDM 内でアドインがどのように処理されるかはわかりませんが、問題は Visual Studio に関連しているようです。他のプラットフォームのアドインで同様の問題が発生している可能性があります。

デバッグ アドインの追加 (最新のソースが使用されるように): PDM デバッグ アドイン

Visual Studio 2010 Express では問題ありません。エクスプローラーを強制終了し、起動して接続し、次のようにします。 VS2010 デバッグ成功

Visual Studio 2012 Express では同じことを達成できませんでした。エクスプローラーをデバッグしているように見えますが(ファイルは読み取り専用で、デバッグ停止ボタンが表示されます)、ブレークポイントにヒットしません: VS2012 デバッグの失敗

私は Windows 7 Professional x64 で作業しています。アドインは .NET 3.5 で構築されています。同じ問題でVS2010とVS2012の両方のソリューションを使用しました。

explorer.exe を再起動すると、最新バージョンのアドインが読み込まれます。プロジェクトは開始アクション「explorer.exe」を使用します。

    <StartAction>Program</StartAction>
    <StartProgram>$(windir)\explorer.exe</StartProgram>
    <StartArguments></StartArguments>

ブレークポイントがヒットしない理由がわかりません。助けていただければ幸いです。

ありがとう!

更新 1

ハンスが提案したことを確認しました-他に2つのプロセスが開始されていますが、それらにアタッチしても何も起こりませんでした.

もう1つ指摘されたのは、これらのプロセスにアタッチしたときに、VisualStudio内にデバッグシンボルがロードされていないためブレークポイントがヒットしないという情報があったということです。赤い円は塗りつぶされ、感嘆符はありません)。

更新 2

マネージされた explorer.exe に VisualStudio をアタッチすると、ブレークポイントがヒットしました。

explorer.exe が管理モードで実行されている場合があるようです。 さまざまなモードでの explorer.exe

両方のモードを並べて実行することもできます。 2 つのモードでの explorer.exe

問題は、管理モードで VisualStudio に explorer.exe を強制的に起動させる方法です。

更新 3

おそらくVisualStudio 2012のバグですか?

VS2010 でデバッグする場合、エクスプローラーは通常モードで開始されますが、アドインが読み込まれるとすぐにマネージド モードに切り替わり、VS2010 はブレークポイントで停止します。

VS2012 では異なります。アドインが読み込まれると、explorer.exe はマネージド モードに切り替わりません (したがって、接続されていますか?) ブレークポイントはヒットしません。

しかし、VS2012 が既に管理モードになっている explorer.exe に接続されると、ブレークポイントで停止します。

更新 4

問題の本質に到達することができました-「デバッグするコードの種類を自動的に決定する」が選択された状態でVS2012を別のプロセス(explorer.exeなど)に接続し、プロセスがネイティブモードで開始され、しばらくしてからロードされますmanaged code - the debugger doesn't stop at the breakpoint. 明示的に選択されたコード タイプ ("Managed (v3.5, v3.0, v2. 0)") - デバッガーはブレークポイントで停止します。

すでに接続に投稿されています - 解決待ちです。このアップデートで説明されているのと同じ問題が発生した場合は、投票してください。

更新 5

単純なマネージド シェル エクステンションでテストしたところなので、SolidWorks Enterprise PDM 関連ではありません。

また、接続に関するより正確なバグを投稿しました。

更新 6

2013 年の初めの時点で、Microsoft は、デバッガが期待どおりに動作しないのは設計上の決定であると主張しています。詳細については、最初の接続バグ レポートを参照してください。

4

1 に答える 1

1

ファイルがメモリのどこにロードされるかを事前に知る方法がないため、(この方法でエクスプローラーにロードされると仮定します.dll)ブレークポイントには常に問題がありました(少なくとも私の経験では)。ブレークポイント。

コード内に手動ブレークポイント呼び出しを追加しようとする場合があります (これは ですint3)。C++ では、次のようになります。

asm {
    int 3;
}

C#には、そのためのメソッドがあります。

System.Diagnostics.Debugger.Break()

関数/コード部分の先頭に追加してみてください (デバッグ モードでの同時コンパイルを忘れないでください)。

次に、アプリケーションのデバッグを開始します ( .exe).dllファイルをロードし、ライブラリをロードすると、ブレーク ポイントがトリガーされます。

于 2012-10-23T06:43:12.453 に答える