시스템 호출 추적

이 페이지에서는 시스템 호출 추적을 통해 컨테이너 샌드박스 제한사항을 진단하는 방법을 설명하고 strace 또는 dtruss와 같은 도구를 사용하여 시스템 호출을 추적하는 데 익숙하다고 가정합니다. 시스템 호출 추적에 익숙하지 않은 경우 Google Cloud 지원팀에 문제의 세부정보를 문의한 후 Google Cloud 지원팀이 시스템 호출을 추적하도록 초대한 경우에만 진행해야 합니다.

컨테이너 샌드박스는 Linux에서 지원되는 모든 시스템 호출을 지원하지 않습니다. strace(Linux) 또는 dtruss(macOS)와 같은 시스템 호출 추적 도구를 사용하여 애플리케이션에서 호출한 syscall을 검사하여 샌드박스에서 지원하지 않는 syscall을 확인할 수 있습니다.

strace(Linux) 사용

Linux에서 코드를 실행하려면 strace를 설치하고 사용 설정합니다.

sudo apt-get install strace

strace를 사용하여 애플리케이션을 실행할 때 일반적인 호출은 strace -f로 시작합니다. 여기서 -f는 모든 하위 스레드를 추적한다는 의미입니다. 예를 들어 ./main으로 애플리케이션을 일반적으로 호출하는 경우 /usr/bin/strace -f ./main을 호출하여 strace로 실행할 수 있습니다.

strace에서 반환된 로그 보기

strace의 시스템 로그는 다음과 같이 표시됩니다.

strace 로그

dtruss(macOS) 사용

macOS에서 코드를 실행하려면 명령줄에서 일반적인 호출을 dtruss -a로 시작하여 dtrusss를 사용합니다. 예를 들면 다음과 같습니다.

sudo dtruss -a ./main

관련 문서를 보려면 man dtruss 명령어를 사용하거나 dtrace/drusss 웹사이트 중 하나를 방문하세요.