2011-03-29 3 views
2

지원할 수있는 응용 프로그램이 전달되었으며이를 수행하는 방법을 찾으려고합니다. 나는 소스를 가지고 있으며 약간의 변경을 할 수는 있지만 분명히 애플리케이션의 아키텍처를 완전히 바꾸고 싶지는 않습니다.동적으로로드 된 실행 파일 디버깅

응용 프로그램은 9 가지 프로젝트로 구성된 VS2010 솔루션입니다. 주요한 것은 Windows Form 응용 프로그램이지만 다른 스레드에서 다른 응용 프로그램을 돌립니다.

여기에 어려움이 있습니다. 서로 다른 프로젝트가 동일한 솔루션의 일부 임에도 불구하고 DLL이 아닌 별도의 실행 파일입니다. 주 프로그램이 다른 프로젝트 중 하나를 시작하면 새로운 프로세스를 만들고 executeable의 파일 이름, 시작 인수 및 기타 여러 매개 변수를 process.StartInfo 개체에 설정 한 다음 process.Start()를 호출합니다.

어떻게 중단 점을 설정하고 하위 실행 파일을 디버그 할 수 있습니까? 로드 될 때까지 첨부 할 수는 없지만 process.Start()가 호출 될 때까지로드되지 않습니다. 그때까지는 너무 늦었습니다. 실제로 실행을 시작하기 전에 실행 파일을로드하기 위해 주 프로그램에 삽입 할 수있는 메서드 호출이 있습니까 (중단 점을 설정할 수 있도록)?

감사합니다.

답변

0

다른 실행 파일을 다시 컴파일 할 수 있습니까? 그렇다면 적절한 장소에 DebugBreak를 넣으려고 했습니까? (또는 _asm int 3).

프로세스를로드 할 수 없습니다. 프로세스를 시작하기 전에 디버깅중인 주소 공간과 다른 주소 공간에서 실행되기 때문에 프로세스를 유용하게로드 할 수 없습니다.

+0

감사합니다. 피트. BTW, C# 구문 (또는 적어도 나를 위해 일한) System.Diagnostics.Debugger.Break(); –

0

응용 프로그램에 참여하는 모든 프로세스의 "주"기능에 DebugActiveProcess 기능 호출을 추가하는 간단한 해결책이 있습니다.