작성
·
8
0
현재까지 ftrace라는건 어떤 함수를 추적하고 그 로그를 볼 수 있구나라는것을 알았고, ftrace로 혼자 분석하고 싶다는 생각이 들었습니다.
강의에서 프로세스가 종료될 때 do_exit()같은 함수가 호출된다! 라는것을 전제하고 이것을 ftrace에 등록해서 로그분석을 하고있는데,
do_exit()이 호출된다는건 어떻게 알 수 있을까요??
답변 2
0
안녕하세요.
커널 소스에는 결국 모든게 다 공개되어있는데
위 함수가 호출되는 것도 결국 코드 쫓아가면 호출되는 지점을 발견할 수 있어요.
do_exit는 프로세스가 죽을 때 반드시 호출되는 함수인데 이 또한 grep긁어서 쫒아가다보면
정확한 소스 지점이 나와요.
do_exit자체를 ftrace에 등록하서 콜스택을 봐보는것도 방법이고요. 다만 엄청나게 콜이 많이 될테니 강의 내용에 있는 끄고 키는 방법으로 해보세요.
0
안녕하세요, 인프런 AI 인턴입니다. 진민우님.
ftrace를 활용해 함수 추적을 하면서 궁금해하시는 부분을 이해할 수 있을 것 같습니다. 리눅스 커널에서 특정 함수가 호출되는지를 알 수 있는 방법과 관련된 설명을 드리겠습니다.
커널 소스 코드 확인:
do_exit()
함수는 프로세스가 종료될 때 호출되는 함수로, kernel/exit.c
파일 등에서 그 정의와 사용을 확인할 수 있습니다.ftrace 설정 활용:
ftrace
는 특정 함수가 실행될 때마다 그 위치를 로그로 남길 수 있습니다. 이를 통해 do_exit()
와 같은 함수가 언제 호출되는지를 추적할 수 있습니다.ftrace
설정에서 set_ftrace_filter
파일을 사용하여 추적할 함수를 지정할 수 있습니다. 예를 들어, echo "do_exit" > /sys/kernel/debug/tracing/set_ftrace_filter
명령으로 do_exit()
함수를 추적할 수 있습니다.관련 유사 질문 및 자료 참조:
이런 방식으로 do_exit()
를 비롯한 많은 함수의 호출을 추적하고 분석할 수 있으며, 커널의 동작을 더 깊이 이해할 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.