本页面介绍了如何使用系统调用跟踪功能来诊断容器沙盒限制,并假设您对如何使用诸如 strace
或 dtruss
之类的工具来跟踪系统调用有一定的了解。如果您不熟悉系统调用跟踪,则只有在您与 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 的系统日志如下所示:
使用 dtruss
(macOS)
如果您在 macOS 上运行代码,请使用 dtrusss
在常规调用前添加命令行中的 dtruss -a
,例如:
sudo dtruss -a ./main
如需查看文档,请使用命令 man dtruss
,或访问其中一个 dtrace/drusss
网站。