c# 편집하며 디버깅 중 Visual Studio에서 하위 프로세스에 자동으로 첨부



vs2017 편집 하며 계속 하기 (4)

미디어 센터 용 플러그인을 작성할 때 플러그인은 ehexthost.exe 에서 호스팅됩니다 ehexthost.exe 이 exe는 ehshell.exe 에서 시작되며 직접 시작할 수 없습니다. 대신 ehshell.exe 특별한 매개 변수를 전달하면 플러그인이 별도로 실행됩니다 방법.

미디어 브라우저를 디버깅 할 때 두 번째 프로세스에 연결하는 프로세스가 복잡하고 Debugger.Attach와 내가 사용할 수있는 몇 가지 특수 레지스트리 항목에 대해 알고 있습니다.

이 두 방법 모두 내 청구서에 정확히 맞지 않습니다. 내가 원하는 것은 F5를 누르고 현재 Visual Studio의 인스턴스를 자식 프로세스에 자동으로 첨부하도록하는 것입니다. 이 작업을 수행 할 수 있습니까?

이 기능을 구현할 수있는 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

또한, 나는 이것을 내 블로그에 올리는 방법에 대한 과정을 설명했다.

https://ffff65535.com


VS2012의 경우 매크로가 삭제되었지만 표준 키보드 단축키를 사용하여 매크로를 빠르게 수행 할 수 있습니다. 예를 들어 iisexpress.exe에 연결하려면 다음과 같이하십시오.

Ctrl + Alt + p - 프로세스에 연결 대화 상자를 불러옵니다.

i - 목록에서 i로 시작하는 첫 번째 프로세스로 이동합니다 (이 경우 iisexpress.exe 임).

입장 - 첨부

초고속의 경우 IIS 디버깅시 Visual Studio 첨부 보안 경고를 해제 할 수도 있습니다.


Visual Studio에서 이와 같이 설정하면 F5 키를 눌러 프로세스에 자동으로 연결할 수 있습니다.

주의 : 실행 가능한 이름으로 "Command"가 채워지고 "Attach"는 "yes"여야합니다.


내가 작성한 Lazy 라는 VisualStudio 플러그인을 확인하십시오.


외부에서 생성 된 프로세스에서 C ++ 플러그 인을 디버깅 할 때 시작시 예외가 발생하여 충돌이 발생하여 완벽하게 작동합니다.

Visual Studio 용 무료 Reattach Extension을 추가하십시오. 실행되기 전에 프로세스 이름에 다시 첨부하도록 요청하십시오. 프로세스 이름이 시작될 때까지 기다리는 중이라는 모달 대화 상자가 나타납니다.

이제 프로세스를 시작하면 Visual Studio 디버거가 즉시 연결되어 예외를 catch하고 중단 점에 도달합니다.

(이것은 미디어 플러그인에도 있었고 예외는 일반적으로 잡히고 델파이 컨텍스트에서 호스트 프로세스에 의해 다시 발생하므로 이전에 중단해야했습니다.)





visual-studio-debugging