跟踪系统调用

本页面介绍了如何使用系统调用跟踪功能来诊断容器沙盒限制,并假设您对如何使用诸如 stracedtruss 之类的工具来跟踪系统调用有一定的了解。如果您不熟悉系统调用跟踪,则只有在您与 Google Cloud 支持联系并提供问题的详细信息,并且 Google Cloud 支持团队已邀请您跟踪系统调用之后,才能继续。

Linux 中支持的所有系统调用并非都受容器沙盒支持。您可以使用 strace (Linux) 或 dtruss (macOS) 等系统调用跟踪工具来检查应用进行的系统调用,以帮助确定不受沙盒支持的系统调用。

使用 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 上运行代码,请使用 dtrusss 在常规调用前添加命令行中的 dtruss -a,例如:

sudo dtruss -a ./main

如需查看文档,请使用命令 man dtruss,或访问其中一个 dtrace/drusss 网站