모든 시스템 호출과 라이브러리 호출을 어디서 찾을 수 있나요?
나열해도 되나요?
어떤 것이 가장 자주 발생하는지 알아내는 방법은 무엇입니까?
답변1
모든 프로그램이 아닌 특정 프로그램의 시스템/라이브러리 호출을 원한다고 생각합니다.
strace
실행 가능한 프로그램의 모든 외부 호출을 표시합니다. 프로그램에 그래픽 사용자 인터페이스가 있다면 수천 개가 있을 것이므로 "화면에서" 분석하기가 어렵습니다.
모든 호출을 저장하려면 strace
출력을 파일로 리디렉션하면 됩니다.
strace your_executable 2> my_log_file
프로그램을 종료하면 닫힙니다. 그런 다음 텍스트 뷰어/편집기에서 파일을 보거나 검색할 수 있습니다. 더 많은 정보는 man strace
다음 에서 얻을 수 있습니다 .linux.die.net/man/1/strace.이 페이지에서는 몇 가지 흥미로운 사용 방법을 보여줍니다.strace
.
완전성을 위해: 스티븐 해리스(Stephen Harris)는 다음과 같이 제안합니다.
FWIW, strace -o log_file -f your_executable이 더 나을 수 있습니다. -o 플래그는 strace가 출력을 그곳으로 보내도록 하고, -ff는 프로그램이 fork()를 호출하면 해당 하위 프로세스도 따라간다는 것을 의미합니다. 애플리케이션에 따라 각 하위 프로세스 데이터가 자체 로그 파일에 있도록 -ff를 사용하는 것이 더 나을 수도 있습니다. strace는 시스템 호출을 표시하고, ltrace는 라이브러리 호출을 표시할 수 있습니다.
더 나아가마크 플롯닉(Mark Plotnick)의 말:
예, ltrace -c -S 명령...은 라이브러리 및 시스템 호출 수를 표시하는 데 사용됩니다.