2015-01-02 4 views
2

함수의 일부 정보를 인쇄하여 SELinux를 디버깅하려고합니다. 필요한 정보는 현재 pid 및 시스템 호출입니다. pid는 쉽습니다 : get_current()->pid,하지만 내가 처리하고있는 현재 시스템 호출을 얻을 수있는 방법을 찾을 수 없습니다.현재 처리중인 시스템 호출의 이름을 아는 방법은 무엇입니까?

나는 get_wchan()을 보았지만 대기중인 프로세스에서만 작동합니다. get_wchan()처럼 스택을 검사 할 수 있지만 더 좋은 방법이 있습니까?

+2

코드에서'dump_stack()'을 호출하면 syslog에 스택 트레이스가 생깁니다. 어떤 시스템 호출이 호출되었는지 결정하는 데 도움이됩니다. 'systemtap','ftrace' 등 커널에서 syscall을 추적하는 더 좋은 방법이 있습니다. – askb

+0

@askb, 좋은 출발점이 될 것 같습니다. 시스템 추적 번호가 스택 추적을 파기하기보다는 어딘가에 저장되어야한다고 생각했습니다. –

+1

이 패치는 내가 원했던 것이지만 메인 라인에 들어갈 수 없었습니다. "[C/R ARM] [PATCH 1/3] ARM : 초보적인 시스템 콜 인터페이스"http://lists.infradead.org/pipermail/linux-arm-kernel/2010-March/011812.html 토론을 읽는 것은 흥미 롭습니다. . –

답변

2

코드에서 dump_stack()을 호출하면 스택 추적을 syslog에 제공하므로 어떤 syscall이 호출되었는지 확인할 수 있습니다. 커널, systemtap, ftrace 등에서 syscall을 추적하는 더 좋은 방법이 있습니다. 먼저 살펴보고 싶을 수도 있습니다. process/strace.stp