IT TIP

Visual Studio : 프로세스가 생성 될 때 프로세스에 자동 연결

itqueen 2020. 11. 20. 17:29
반응형

Visual Studio : 프로세스가 생성 될 때 프로세스에 자동 연결


프로세스 (a.exe)가 생성되는 즉시 연결하고 싶습니다. VS로 수행 할 수 있습니까? 프로세스 이름 만 알고 있습니다. 실제로 내가 달성하고 싶은 것은 C # 코드에 중단 점을 설정하는 것이지만 코드는 현재 실행중인 응용 프로그램 (c.exe)에 의해 시작될 다른 실행 파일에 속합니다. 코드가 초기화 기간 내에 있으므로 수동으로 첨부 할 수 없습니다.


이전에이 상황에 직면했을 때 (그리고 두 프로세스를 모두 제어 했음) 적절한 해결 방법은 생성 프로세스의 진입 점에 Debugger.Launch ()호출하는 것 입니다. VS는 대화 상자를 표시하고 프로세스에 연결할 수 있습니다.


MSDN 문서, 방법 : 자동으로 디버거 실행 -이렇게하면 [UAC를 끄거나 다른 문제를 일으키지 않고] 확인 대화 상자를 클릭하는 바쁜 작업을 건너 뛸 수 있습니다. 이 문서에는 다음 단계가 나와 있습니다.

  1. 레지스트리 편집기 (regedit)를 시작합니다.
  2. 레지스트리 편집기에서 HKEY_LOCAL_MACHINE 폴더를 엽니 다.
  3. HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows NT \ currentversion \ image 파일 실행 옵션으로 이동합니다.
  4. 에서 이미지 파일 실행 옵션 폴더와 같은 디버깅 할 응용 프로그램의 이름을 찾을 수 MyApp.exe의를 . 디버깅 할 응용 프로그램을 찾을 수없는 경우 :
    a. 이미지 파일 실행 옵션 폴더를 마우스 오른쪽 단추로 클릭하고 바로 가기 메뉴에서 새 키를 클릭 합니다 .
    비. 새 키를 마우스 오른쪽 버튼으로 클릭하고 바로 가기 메뉴에서 이름 바꾸기를 클릭 합니다. 씨. 키 이름을 애플리케이션 이름으로 편집하십시오. 이 예에서는 myapp.exe 입니다.
  5. myapp.exe 폴더를 마우스 오른쪽 단추로 클릭하고 바로 가기 메뉴에서 새 문자열 값을 클릭 합니다 .
  6. 새 문자열 값을 마우스 오른쪽 단추로 클릭하고 바로 가기 메뉴에서 이름 바꾸기를 클릭합니다.
  7. 이름을 디버거로 변경하십시오.
  8. 새 문자열 값을 마우스 오른쪽 단추로 클릭하고 바로 가기 메뉴에서 수정을 클릭 합니다. 문자열 편집 대화 상자가 나타납니다.
  9. 에서 값 데이터 상자에 vsjitdebugger.exe .
  10. 클릭 OK .
  11. 로부터 레지스트리 메뉴를 클릭 종료 .
  12. vsjitdebugger.exe를 포함하는 디렉토리는 시스템 경로에 있어야합니다. 시스템 경로에 추가하려면 다음 단계를 따르십시오
    . 열기 제어판을 클래식보기에서 두 번 클릭 시스템 .
    비. 고급 시스템 설정을 클릭 합니다 .
    씨. 에서 시스템 등록 정보 , 클릭 고급 탭을 선택합니다.
    디. 고급 탭을 클릭 환경 변수 .
    이자형. 에서 환경 변수 대화 상자에서 시스템 변수 를 선택 경로 , 다음을 클릭 편집 버튼을 클릭합니다.
    에프. 에서 편집 시스템 변수대화 상자에서 변수 값 상자에 디렉터리를 추가합니다 . 세미콜론을 사용하여 목록의 다른 항목과 구분하십시오.
    지. 확인클릭 하여 시스템 변수 편집 대화 상자 를 닫습니다 .
    h. 확인클릭 하여 환경 변수 대화 상자 를 닫습니다 . 나는. 확인클릭 하여 시스템 속성 대화 상자 를 닫습니다 .
  13. 이제 아무 방법이나 사용하여 응용 프로그램을 시작하십시오. Visual Studio가 시작되고 응용 프로그램을로드합니다.

또 다른 좋은 해결책은 Visual Studio Extension "ReAttach"를 사용하는 것입니다. 여기 에서 찾을 수 있습니다 .

프로세스가 현재 실행되고 있지 않은 경우 ReAttach는 프로세스를 시작하고 사용할 수있게되는 즉시 연결하도록 요청합니다.


수락 테스트 내에서 콘솔 응용 프로그램을 시작할 때이를 수행 할 수있는 방법을 찾고 있습니다.

오늘 발견했습니다-https: //blogs.msdn.microsoft.com/visualstudioalm/2014/11/24/introducing-the-child-process-debugging-power-tool/

Visual Studio의 추가 기능이며 대우를 수행합니다. 수락 테스트를 디버깅하고 (resharper 테스트 실행기를 사용함) 시작되는 앱 내에 중단 점을 배치하면 이제 동일한 Visual Studio 인스턴스에서 앱을 디버깅 할 수 있습니다.


"Entrian Attach"정확히이 작업을 수행 하는 Visual Studio 추가 기능입니다. 실행 파일의 이름을 알려주고 코드가 실행되기 전에 시작 방법에 관계없이 프로세스가 시작될 때 디버거를 연결합니다.

(공개 : 저는 저자입니다.이 문제가 항상 발생하기 때문에 Attach를 만들었습니다!)


방법 : a.exeVS에서 프로젝트를 열고 중단 점 등을 설정합니다. 그런 다음 a.exe의 프로젝트 속성 , 디버깅열고 Commandc.exe. 그런 다음 Debug를 누르십시오 .

안타깝게도 저는 관리되는 프로젝트에서이 작업을 수행 한 적이 없으므로 여기서 벗어날 수 있습니다. 그러나 이것이 관리되지 않는 (C ++) 프로젝트에서 수행하는 방법입니다. 관리 형 디버거도 지원해야한다고 생각합니다.


Windows 디버깅 도구와 함께 제공되는 gflags.exe 유틸리티를 사용할 수도 있습니다. gflags.exe를 연 다음 이미지 파일로 이동하여 프로세스 이름 (a.exe)을 입력하고 탭을 누르고 TextBox에서 디버거 확인란을 선택하면됩니다. / debugexe 옵션을 사용하여 vs 경로를 입력합니다 (예 : "C : \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ devenv.exe"/ debugexe).

프로세스가 실행되면 자동으로 Visual Studio가 열리고 중단 점을 추가하고 실행을 누를 수 있습니다.


비 관리 코드에서 C # 코드를 시작하는 경우 "비 관리 코드 디버깅"@Project 속성-> 디버그 옵션을 선택해야합니다.


@RichieHindle 이 제안한 Entrian Attach가 정말 마음에 들었지만 비슷한 일을하는이 무료 도구도 발견했습니다. 디버깅 프로세스에서 시작된 모든 프로세스를 포착합니다.

생성 된 프로세스 포수 : https://marketplace.visualstudio.com/items?itemName=Brubtsov.SpawnedProcessCatcher


VS 2013 SP2부터는 이미 디버깅중인 프로세스에 의해 시작되는 모든 프로세스를 연결하는 "Spawned Process Catcher"와 동일한 기능을 수행하는 Microsoft의 무료 도구가 있습니다. 참고 : 관리되지 않는 C ++로만 테스트했습니다 (완벽하게 작동 함).

Microsoft 자식 프로세스 디버깅 전원 도구

MSDN 블로그 항목

참고 URL : https://stackoverflow.com/questions/1951124/visual-studio-auto-attach-to-a-process-when-the-process-is-spawned

반응형