2009-03-14 20 views
6

Internet Explorer内で実行されているブラウザヘルパーオブジェクトを開発中です。 ATLTRACE("...");でデバッグメッセージを作成しています。Visual Studioがiexplore.exeプロセスに接続されている場合、これらは正常に表示されますが、クイックテストには時間がかかります。 DebugViewは私のBHOから何も取得しません。Visual StudioでDebugViewがデバッグメッセージを表示しないのはなぜですか?

なぜDebugViewはBHOデバッグメッセージを表示しないのですか? Internet Explorerの低レベルでの実行とは何か?

答えて

11

IEをVista以降で実行していると仮定すると(完全性レベルについて話しているように思える)、DebugViewの整合性レベルを低く設定して、アプリケーションがメッセージを送信できるようにします:

icacls dbgview.exe /setintegritylevel low 

そして、あなたは永久に低い整合性にDBGVIEWを設定するという考えが気に入らない場合は(彼らは唯一の整合性の低い店に行くと、それは、貯蓄のログやその他もろもろの痛みのビットを作るかもしれません) Sysinternalsのpsexecツールを使用してdbgviewの特定のインスタンスを低い整合性で実行することができます。

最後に、プロセスにアタッチするためにVSデバッガをロードするのにかかる時間が心配なら、ntsd.exeやcdb.exeなどのコマンドラインデバッガを使用できます。 Ntsd.exeにはWindowsが付属していますが、新しいバージョンには"Debugging Tools for Windows" packageが付属しています。これには非常によく似たcdb.exeも含まれています。

+0

これは奇妙に聞こえますが、なぜこれが機能するのかについての詳細はありますか?トレースは、メッセージングではなくOutputDebugStringを使用します。 – jdigital

+3

私の思い出は、OutputDebugStringがミューテックスと共有メモリセクションを使用し、データを渡すことです。私は(おそらく間違って)、共有セクションを開くこと、または低い完全性プロセスからより高い完全性プロセスへのイベントを通知することがブロックされていると想定します。 –

+0

psexec a go - 素晴らしい作品です。漠然と過去に同様の問題を思い出して、私はどのように解決したのか忘れてしまった。低いところでDbgViewを実行すると仕事はできますが、むしろ面倒です! 時を経て、時間がかかるIEシンボルをロードするVisual Studio。私はおそらくそれを少しスピードアップすることができます。 – Mat

1

あなたのクイックテストでは、Visual Studioはまだ動作していますか?その場合は、この問題が発生する可能性があります。

+0

私はあなたの考えに従っています - Visual Studioは動作していますが、デバッグはしていません。 – Mat

+0

これをシャットダウンし、DebugViewが機能するかどうか確認してください。 – jdigital

+0

ただ確認してください:Visual Studio DOESを実行するだけでメッセージが傍受され、DebugViewで表示されなくなります。デバッグセッションを実行しないだけでは不十分です。回避策として、Visual Studioの前にDebugViewを起動すると、まだすべてのメッセージが表示されるようです。 – Cray

関連する問題