2009-12-18 4 views
5

프로세스를 시작한 후 즉시 일시 중지하는 데 사용할 수있는 명령이나 도구가 있는지 알고 싶습니다.프로세스를 시작한 다음 즉시 일시 중지하는 방법은 무엇입니까?

디버거를 연결할 수 있도록이 함수가 필요합니다. Visual Studio의/debugexe 기능을 시도했지만 프로그램의 동작이 변경된 것 같습니다. 그래서 다른 방법으로 연결하고 디버깅 할 필요가 있습니다.

감사합니다.

+2

경쟁 조건이나 다른 동시성 문제가 있다는 것이 진짜 문제라고 생각합니다. 따라서 디버거에서 실행하면 문제가 숨겨집니다. –

+0

내 문제에 대해 유용한 의견을 보내 주셔서 감사합니다. 프로그램 용 플러그인을 개발 중이므로 호스트 프로그램의 소스 코드를 수정할 수 없습니다. 따라서 sharptooth 및 nobugz가 제공하는 솔루션이 내 문제에 더 적합 할 것입니다. R Samuel Klatchko와 Rytmis의 솔루션을 사용하려면 호스트 프로그램을 수정해야한다고 생각합니다. – askalee

답변

4

CREATE_SUSPENDED 플래그와 함께 CreateProcess()를 사용할 수 있습니다. 그러면 주 스레드가 일시 중단 된 상태에서 프로세스가 시작됩니다. 그런 다음 연결 한 후 ResumeThread()를 호출합니다.

0

첫 번째 문장으로 Sleep() 호출을 추가하는 방법은 어떻습니까?

+0

그것은 대부분의 경우에 효과가 있습니다. 그러나 WinMain()이 호출되기 전에 문제가 발생하면 쓸모가 없습니다. – sharptooth

0

은 또한 코드에서

System.Diagnostics.Debugger.Break(); 

에 전화를 추가 할 수 있습니다. 프로그램을 일시 중단 한 다음 사용할 디버거를 선택하도록 요청합니다. 그런 다음 실행중인 Visual Studio 인스턴스에 연결할 수 있습니다. 디버거에서 이미 실행 중이면 중단 점에 도달 한 것처럼 중단됩니다.

관련 문제