시스템 전체의 라이브러리 호출을 모니터링하려고 합니다. 나는 라이브러리 호출을 추적하기 위해 다음 스크립트를 작성했습니다 libguestfs
.
probe begin {
printf("ok\n")
}
probe process("/usr/lib64/libguestfs.so.0.471.0").function("*") {
print_usyms(ubacktrace())
}
그런 다음 test.stp로 저장하고 "sudo stap test.stp"를 실행했습니다. 이러한 함수 호출을 가로채기 위해 사용하는 프로세스가 필요합니다. 그래서 저는 다음과 같은 간단한 프로그램을 사용했습니다.libguestfs 테스트 도구이것은 libguestfs 패키지의 일부입니다. 세그폴트입니다! stap을 실행하지 않으면 세그폴트가 발생하지 않습니다.
기본적으로 두 가지 질문이 있습니다.
1-왜 이런 일이 발생합니까? 내가 뭐 잘못 했어요?
2- ltrace 기능을 사용해야 하지만 시스템 전체에서 사용해야 합니다. 각 라이브러리 호출에 대해 호출된 최상위 API와 함수를 호출하는 프로세스의 pid를 가져와야 합니다. stap을 사용해 보았지만 불안정한 문제가 있는 것 같습니다. 대안이 있습니까?
추신: 저는 커널 3.12.2.3과 함께 CentOS 7을 사용합니다.