
在macos系统上安装go语言环境后,用户可能会遇到一条特定的提示信息,要求对调试器进行特殊安装:
On OS X the debuggers must be installed setgrp procmod. Read and run ./sudo.bash to install the debuggers.
这条提示的核心在于指明了Go调试器(如prof和cov工具)在macOS上需要特定的文件权限设置:它们必须属于procmod组,并且需要设置SetGID位。这通常是为了允许这些工具在调试过程中访问受保护的进程信息。官方建议运行Go源码目录下的./sudo.bash脚本来自动化这一过程。理论上,该脚本会负责将调试器二进制文件从构建区域复制到/usr/local/bin,并为它们设置正确的组和SetGID权限。
当按照提示运行./sudo.bash后,有时用户会发现似乎“什么也没发生”。这可能是因为脚本执行过程中没有明显的输出,或者遇到了权限问题导致未能成功完成操作。
为了深入了解sudo.bash脚本的实际执行情况,可以使用sh -x命令来以调试模式运行它。这将显示脚本执行的每一步命令及其参数,有助于诊断问题:
sh -x ./sudo.bash
通过这种方式,您可以观察到脚本是否尝试了复制文件、更改组和设置权限。常见的失败原因可能包括:
部分开发者可能不希望将Go的调试器安装到/usr/local/bin这样的全局路径,而是倾向于将其与Go的安装目录($GOROOT)保持一致,以实现更好的版本管理和隔离。在这种情况下,可以创建一个自定义的安装脚本来替代官方的sudo.bash。
以下是一个示例的自定义脚本,命名为sudo.bash.goroot,它会将调试器安装到$GOROOT/bin目录下并设置相同的权限:
#!/usr/bin/env bash
# Copyright 2009 The Go Authors. All rights reserved.
# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file.
set -e
. ./env.bash # 确保Go环境变量已加载
case "`uname`" in
Darwin)
;;
*)
exit 0 # 非macOS系统直接退出
esac
# 遍历并安装调试工具
for i in prof cov
do
# 复制二进制文件到 $GOROOT/bin
sudo cp "$GOROOT"/src/cmd/$i/6$i $GOROOT/bin/6$i
# 更改文件所属组为 procmod
sudo chgrp procmod $GOROOT/bin/6$i
# 设置SetGID权限,并确保组可读写执行
sudo chmod g+s $GOROOT/bin/6$i
done使用此自定义脚本的步骤:
该脚本的核心逻辑在于:
通过上述方法,您可以确保Go调试器在macOS上正确安装并具备所需权限,从而顺利进行Go程序的性能分析和代码覆盖率测试。选择适合您工作流的安装方式,并始终注意权限设置的安全性。
以上就是Go调试器在macOS上的安装与配置指南的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号