| [ CnUnix ] in KIDS 글 쓴 이(By): dkkang (압셍트) 날 짜 (Date): 2003년 3월 5일 수요일 오후 08시 16분 15초 제 목(Title): Re: 디버거 동작원리를 좀 알고 싶은데요.. > just for debugging purpose, we should be able to make > a brake at an arbitrary position in the source code, > such an information should be buried into the kernel > so that the fucking scheduler can release the > control back to the user task, processes, daemons, etc. 쩝, 죄송합니다만 한 다섯번 정도 반복해서 읽어봤는 데. 오히려 저 스스로 다 많은 걸 모르고 있었다는 생각이 드네요. 제가 유닉스 쪽으로 내공이 부족한지 여전히 이해가 잘 안가네요. 좀 더 쉽고 자세하게 ^^; 일단 gdb가 부모가 된 상황에서 디버그할 프로그램을 자식으로 로드하겠죠. 그리고 나서, 디버그할 프로그램의 브레이크 포인트를 넣어야 할 때, 커널에 있어야 하는 그러한 정보란게 뭔가요? 왜냐면 일단 자식 프로그램을 로드하고 나면 최근에 실행된 위치만 안다면 그 다음의 임의의 위치에 브레이크 포인트를 넣는 건 문제가 안될 거 같다는 막연한 생각이 드는 데요. 커널에 있는 정보를 가져오는 거는 권한이 낮은 유저 프로세스에게도 허용되는 경우가 많이 있는 데, 설령 그렇지 않더라도 그게 시스템 콜을 가로채는 거하고 어떻게 연관이 되는지 잘 이해가 안가네요. Tony님이 말씀하신 ptrace는 제가 보기엔 결국 커널 수준에서 디버거들을 위해서 디버깅을 지원하는 라이브러리 같군요. |