2016-12-08 2 views
2

gdb를 inetd에서 실행되고 프로세스가 너무 빨라 완료 할 수 있기 때문에 프로세스 시작을 쉽게 제어 할 수없는 프로세스에 gdb를 연결하고 싶습니다. 일단 시작되면 첨부하십시오.디버거가 붙을 시간을 허용하는 프로세스를 일시 중지합니다.

디버깅을 시작하려는 특정 시점에 약간의 코드를 삽입하고 싶습니다. 이 코드는 디버거가 연결되고 계속 진행될 때까지 기다리는 것이 이상적입니다. 나는 잠을 시도했지만 시간을 충분히 잡을 시간이 길어서 선택하기가 까다 롭지 만 gdb가 첨부 된 후에 기다리는 것은 불편하지 않을 정도로 짧습니다.

이 목적으로 삽입하거나 전화를 걸려면 더 좋은 코드 선택이 있습니까?

+0

또한 'follow-fork-mode child'를 설정하여 새로운 하위 프로세스를 디버그 할 수 있습니다. – ks1322

답변

3

내가 원하는 것은 디버깅을 시작하려는 특정 지점에 약간의 코드를 삽입하는 것입니다.

나는 보통 이런 식으로 작업을 수행합니다

volatile int done = 0; 
while (!done) sleep(1); 

는 GDB가 (당신이 sleep 내부에 있습니다)에 연결합니다. finish 그리고 나서 set var done = 1을 실행하고 나머지 디버깅 세션을 즐기십시오 ;-)

관련 문제