CreateProcess
을 통해 기본 Windows 프로그램에서로드되는 cygwin gcc 컴파일 프로세스를 디버깅합니다. 예를 들어 메인 앞에 중단 점을 설정하고 싶습니다. mainCRTStartup
.아직 시작되지 않은 프로세스에 gdb를 사용하여 연결
아직로드되지 않은 프로세스에 연결하고 중단 점을 설정하는 방법 mainCRTStartup
?
주
이 중요한 경우, 그것의하지 XY 문제. Windows 2012 R2에서 발생할 수있는 버그를 분석 중이며 CreateProcess 호출에서로드 된 프로세스의 기본 진입 점까지 전달 된 전체 명령 줄을 추적해야합니다. MS에 접근하기 전에 문제가있는 곳을 확실히 알아야합니다.
또한 WinDBG가 cygwin gcc 컴파일 바이너리를 디버깅 할 수 없기 때문에 gdb를 사용해야합니다. 내가 GFLAGS를 사용
노력이 무엇
, 나는 "너무 긴 파일 이름을"이미지로드가,하지만 불행히도, 메시지와 함께 인사를 할 때 어느 GDB를 호출하기 위해 노력하고 어떤없이 GDB를 호출 active process
이 접근법의 문제점은 gflags가 이미지 이름 뒤에 명령 줄 매개 변수가있는 디버거를 호출하는 것입니다. 여기서 gdb는 명령 줄 매개 변수없이 PID 또는 이미지 이름을 필요로합니다. 참조 How to attach a process in gdb
어떻게 존재하지 않는 프로세스에 * 아무것도 * 할 것인가? 그것은 매우 간단합니다. 당신은 할 수 없습니다. 그리고 왜 우리가 그렇게하고 싶어하는지 말해 주실 수 있습니까? ([XY 문제] (http://meta.stackoverflow.com/questions/66377/what-is-the-xy-problem)에 대해 읽어보십시오. –
@JoachimPileborg : 'XY 문제'가 아닙니다. Windows 2012 R2에서 발생할 수있는 버그를 분석하고 CreateProcess 호출에서 주 진입 점까지 전달 된 전체 명령 줄을 추적해야합니다. MS에 접근하기 전에 문제가있는 곳을 확실히 알아야합니다. – Abhijit
당신은 우리가 왜 당신이하고 싶은 일을하고 싶었는지, 현 솔루션을 어떻게 작동시키는 지 알고 싶다고 말하지 않았습니다. 그래서 실제로 XY 문제입니다. 이제 우리는 최소한 당신이하고 싶은 것을 알고 있으며 지식이있는 사람은 원하는 솔루션이 가능하거나 다른 솔루션 (아무도 할 수 없었던 마지막)이 있는지 말할 수 있습니다. –