sshd 코드를 분석하고 있습니다. gdb를 이용해서 분석을 하려고 하는데 sshd가 데몬으로 돌아가면서 새로운 연결이 들어왔을때 fork를 하는데 보통 프로그램 디버깅하듯 실행시키니 바로 종료가 되버리네요.. attach라는 gdb 명령어가 이럴때 쓰는것 같은데 fork 되는 부분에서는 어떻게 따라가는지 모르겠습니다.. :cry:
안타깝게도 child process를 추적해서 들어가는 기능은 HP-UX 11.x 이상에서만 동작한다고 합니다. 기타 다른 system에서는 이러한 기능을 제공하지 않습니다.
따라서 이 경우, 오리지널 프로그램을 수정해서 fork()한 후, child process에서 일정 시간동안 sleep()하는 코드를 넣고, 이 기간동안 (ps 명령 또는 fork의 리턴 값을 통해) child process의 pid를 얻은 다음, 다시 attach하는 방식으로 debugging할 수 있습니다.
안타깝게도 child process를 추적해서 들어가는 기능은 HP-UX
안타깝게도 child process를 추적해서 들어가는 기능은 HP-UX 11.x 이상에서만 동작한다고 합니다. 기타 다른 system에서는 이러한 기능을 제공하지 않습니다.
따라서 이 경우, 오리지널 프로그램을 수정해서 fork()한 후, child process에서 일정 시간동안 sleep()하는 코드를 넣고, 이 기간동안 (ps 명령 또는 fork의 리턴 값을 통해) child process의 pid를 얻은 다음, 다시 attach하는 방식으로 debugging할 수 있습니다.
자세한 것은, GDB 매뉴얼: Debugging programs with multiple processes를 참고하기 바랍니다.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
참고로 sshd 디버깅 모드로 동작하게 하면 fork 하지 않을겁니다.
참고로 sshd 디버깅 모드로 동작하게 하면 fork 하지 않을겁니다.
---------
간디가 말한 우리를 파괴시키는 7가지 요소
첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스
이익추구를 위해서라면..
다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치
댓글 달기