web-dev-qa-db-ja.com

デバッグ中にVisualStudioで子プロセスに自動的にアタッチする

メディアセンター用のプラグインを作成する場合、プラグインはehexthost.exeでホストされ、このexeはehshell.exeから起動され、直接起動する方法はありません。代わりに、ehshell.exeに特別なパラメータを渡します。別のプロセスでプラグインを起動します。

デバッグ中 メディアブラウザ 2番目のプロセスにアタッチするプロセスが不格好であることがわかりました。Debugger.Attachといくつかの 特別なレジストリ エントリについて知っています。 。

これらの方法はどちらも私の法案に正確には適合しません。 F5キーを押して、現在のVisualStudioのインスタンスを子プロセスに自動的にアタッチする必要があります。これはできますか?

この機能を実現できるVS用のプラグインがあれば、それで満足です。

[〜#〜]編集[〜#〜]

私は次のマクロを使うことになりました:

Public Sub CompileRunAndAttachToEhExtHost()

    DTE.Solution.SolutionBuild.Build(True)
    DTE.Solution.SolutionBuild.Debug()

    Dim trd As System.Threading.Thread = New System.Threading.Thread(AddressOf AttachToEhExtHost)
    trd.Start()

End Sub

Public Sub AttachToEhExtHost()
    Dim i As Integer = 0
    Do Until i = 50
        i = i + 1
        Try

            For Each proc As EnvDTE.Process In DTE.Debugger.LocalProcesses
                If (proc.Name.IndexOf("ehexthost.exe") <> -1) Then
                    proc.Attach()
                    Exit Sub
                End If
            Next
        Catch e As Exception
            ' dont care - stuff may be busy 
        End Try
        Threading.Thread.Sleep(100)
    Loop
End Sub

また、ブログで これを実行する 方法のプロセスの概要を説明しました。

36
Sam Saffron

マクロを使用します。 F5関数を再定義して、通常実行する長いビルド/検証ではなく、asp.netプロセスにアタッチしました。これは私にとってはかなりうまく機能し、本当に簡単です。

    For Each process In DTE.Debugger.LocalProcesses
        If (process.Name.IndexOf("aspnet_wp.exe") <> -1) Then
            process.Attach()
            Exit Sub
        End If
    Next
38
Jab

VS2012の場合、マクロは削除されましたが、標準のキーボードショートカットを使用すると非常にすばやく実行できます。たとえば、iisexpress.exeにアタッチするには:

CtrlAltp -[プロセスにアタッチ]ダイアログを表示します

i -リスト内のiで始まる最初のプロセスにジャンプします(私にとってこれはiisexpress.exeです)

Enter -添付

超高速の場合は、 IISのデバッグ時にVisual Studio Attachセキュリティ警告をオフにする もできます。

14

Lazy という名前の私が書いたVisualStudioプラグインをチェックしてください。

11
Pablo Retyk

起動時に例外をスローすることでクラッシュする、外部で生成されたプロセスでC++プラグインをデバッグしていましたが、これは完全に機能しました。

無料の Visual Studio用の拡張機能の再接続 を追加します。起動する前に、プロセス名に再度アタッチするように依頼してください。プロセス名の起動を待機していることを示すモーダルダイアログが表示されます。

ここでプロセスを起動すると、Visual Studioデバッガーがすぐにアタッチされ、例外をキャッチしてブレークポイントに到達します。

(これもメディアプラグインにありました。例外は通常、Delphiコンテキストのホストプロセスによってキャッチされて再スローされたため、それが発生する前に中断する必要がありました)。

2
mstrange

Visual Studioでそのようなものをセットアップした場合、F5キーを押すと、プロセスに自動的にアタッチできます。

http://vvcap.net/db/ujYL7zeN_n_RgeprqCSM.htp

注意:実行可能ファイル名として「コマンド」が入力されており、「添付」は「はい」である必要があります

0
galets