2011-03-11 6 views
2

fork() 시스템 호출의 다양한 세부 사항을 조사하기 위해 gdb를 사용하고 싶습니다. 이렇게하려면 fork()에서 하나의 중단 점을 사용하고 이후부터는 step 명령을 사용하지만 잘 작동하지 않습니다.fork() 시스템 호출을 위해 gdb 사용하기

누군가가 fork() 시스템 호출 중에 발생하는 모든 단일 단계를 조사하기 위해 gdb를 사용하는 방법을 설명 할 수 있습니까?

+0

커널로 들어가기를 원하십니까? – Gabe

답변

0

먼저 커널 코드를 살펴 보는 것이 가장 좋은 방법을보고 싶다면 check it here.

사용자 공간에서 커널을 단계별로 실행할 수 있다고 생각하지 않습니다. 가상 서버를 사용하여 KGDB를 사용하여 디버깅을 할 수 있습니다. blog post here을 확인하십시오. 또는 기본 커널에서 KGDB을 사용할 수 있습니다.

+0

물론 사용자 공간에서 커널 공간을 밟을 수는 없습니다. 커널 공간과 사용자 공간 분리의 전체 지점입니다. – littleadv

2

포크가 호출되면 부모 대신 자식 프로세스를 따르고 싶다는 뜻일까요? 이 경우 :

당신이 부모 프로세스 대신 아이 절차를 따르십시오, 는 후속 포크 모드를 명령 세트를 사용합니다.

세트 후속 포크 모드 포크 또는 vfork 상태의 프로그램 호출에 디버거 응답을 설정모드

. 포크 또는 vfork 로의 호출은 새로운 프로세스를 생성합니다. mode 인수는 다음과 같을 수 있습니다.

부모 : 원래 프로세스는 fork 후에 디버깅됩니다. 자식 프로세스가 방해받지 않고 실행됩니다. 이것은 기본값입니다.

자식 : 새 프로세스는 분기 후에 디버깅됩니다. 상위 프로세스는 을 방해하지 않습니다.

관련 문제