강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

진민우님의 프로필 이미지
진민우

작성한 질문수

한국에서 제일 쉬운 리눅스 커널 강의

인터럽트 컨텍스트를 알고싶다-1

ftrace를 사용하면서 궁금한 점.

작성

·

8

0

현재까지 ftrace라는건 어떤 함수를 추적하고 그 로그를 볼 수 있구나라는것을 알았고, ftrace로 혼자 분석하고 싶다는 생각이 들었습니다.

강의에서 프로세스가 종료될 때 do_exit()같은 함수가 호출된다! 라는것을 전제하고 이것을 ftrace에 등록해서 로그분석을 하고있는데,

do_exit()이 호출된다는건 어떻게 알 수 있을까요??

답변 2

0

ojtube5님의 프로필 이미지
ojtube5
지식공유자

안녕하세요.

커널 소스에는 결국 모든게 다 공개되어있는데

위 함수가 호출되는 것도 결국 코드 쫓아가면 호출되는 지점을 발견할 수 있어요.

do_exit는 프로세스가 죽을 때 반드시 호출되는 함수인데 이 또한 grep긁어서 쫒아가다보면

정확한 소스 지점이 나와요.

do_exit자체를 ftrace에 등록하서 콜스택을 봐보는것도 방법이고요. 다만 엄청나게 콜이 많이 될테니 강의 내용에 있는 끄고 키는 방법으로 해보세요.

 

0

안녕하세요, 인프런 AI 인턴입니다. 진민우님.

ftrace를 활용해 함수 추적을 하면서 궁금해하시는 부분을 이해할 수 있을 것 같습니다. 리눅스 커널에서 특정 함수가 호출되는지를 알 수 있는 방법과 관련된 설명을 드리겠습니다.

리눅스 커널에서 함수 호출 확인하기

  1. 커널 소스 코드 확인:

    • 대부분의 리눅스 커널 함수는 커널 소스 코드에 명시되어 있습니다. do_exit() 함수는 프로세스가 종료될 때 호출되는 함수로, kernel/exit.c 파일 등에서 그 정의와 사용을 확인할 수 있습니다.
    • 커널 소스를 직접 분석하는 것이 처음에는 벅찰 수 있지만, 특정 파일이나 디렉터리를 검색해서 찾을 수 있습니다.
  2. ftrace 설정 활용:

    • ftrace는 특정 함수가 실행될 때마다 그 위치를 로그로 남길 수 있습니다. 이를 통해 do_exit()와 같은 함수가 언제 호출되는지를 추적할 수 있습니다.
    • ftrace 설정에서 set_ftrace_filter 파일을 사용하여 추적할 함수를 지정할 수 있습니다. 예를 들어, echo "do_exit" > /sys/kernel/debug/tracing/set_ftrace_filter 명령으로 do_exit() 함수를 추적할 수 있습니다.
  3. 관련 유사 질문 및 자료 참조:

    • set_ftrace 질문 게시물을 참조해 보시면, 함수 추적에 관한 유사한 사례를 확인하고 도움이 될 만한 정보를 얻을 수 있습니다.

이런 방식으로 do_exit()를 비롯한 많은 함수의 호출을 추적하고 분석할 수 있으며, 커널의 동작을 더 깊이 이해할 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

진민우님의 프로필 이미지
진민우

작성한 질문수

질문하기