讲师中心 微信公众号
AI工具推荐 视频效率加速

VSCode 调试器在 macOS 下的 System Integrity Protection (SIP) 权限突破

酷宇同学_2977

酷宇同学_2977

发布时间:2026-06-28 10:04:39

|

831人浏览过

|

来源于php中文网

原创

VSCode在macOS调试Python报PermissionError[Errno 13],根本原因是SIP阻止debugpy在/usr、/System等受保护路径写临时文件或读符号表;解决关键是将脚本和Python解释器移至用户目录(如~/dev/或/opt/homebrew/bin/python3),并在launch.json中显式指定python路径,避免fallback到系统路径。

vscode 调试器在 macos 下的 system integrity protection (sip) 权限突破

VSCode 调试器在 macOS 下报 PermissionError: [Errno 13] Permission denied,通常不是权限没给够,而是调试器试图访问被 SIP 锁死的路径(比如 /usr/bin/python3、/System 或某些预装工具链),或在受保护目录下创建临时调试文件。直接 sudo code 或改目录权限治标不治本,甚至可能破坏沙盒行为。真正要解决,得看清 SIP 拦在哪、为什么拦、以及哪些操作能绕过它而不关 SIP。

为什么 debugpy / ptvsd 在 SIP 下会失败

VSCode 的 Python 调试器(如 debugpy)需要:① 注入代码到目标进程;② 绑定本地端口(默认 5678);③ 在脚本所在目录写入临时 .debugpy 文件或 socket;④ 读取符号表或系统库路径。SIP 不阻止端口绑定,但会拦截第③和④步——尤其当脚本位于 /usr、/System、/bin 等受保护路径时,OS 层直接拒绝写入或读取。

常见表现:

  • 调试器启动后立刻退出,控制台显示 PermissionError: [Errno 13],但终端里 python3 script.py 正常运行
  • debugpy 进程卡在 Waiting for process to attach...,实际没监听端口(用 lsof -i :5678 验证)
  • VSCode 弹出 “无法启动调试会话” 提示,且日志里出现 Failed to create debug adapter 或 Cannot write to path

不关 SIP 的安全调试方案

完全禁用 SIP 是高危操作,仅限内核级调试或驱动开发。绝大多数 VSCode 调试场景,只需避开 SIP 限制路径即可。核心原则:所有调试目标必须放在用户可写区域。

macOS Notes
macOS Notes

通过 AppleScript 创建、读取、搜索及管理 macOS 备忘录。适用于用户要求记笔记、记录事项、保存想法、创建会议记录等场景。

下载
  • 把 Python 脚本移到 ~/Desktop、~/Documents 或项目根目录(如 ~/dev/myproject/),确保父目录有 rwx 权限(ls -ld ~/dev 查看)
  • 不要用系统 Python 解释器路径(如 /usr/bin/python3);改用 Homebrew 安装的 /opt/homebrew/bin/python3(Apple Silicon)或 /usr/local/bin/python3(Intel),这些路径不受 SIP 保护
  • 在 launch.json 中显式指定 "python" 字段,例如:"python": "/opt/homebrew/bin/python3",避免 VSCode 自动 fallback 到系统路径
  • 如果使用虚拟环境,确保 venv 创建在用户目录下(如 python3 -m venv ~/venvs/myproj),而不是 /usr/local/venv 等 SIP 受限区

需要临时禁用 SIP 的极少数场景

只有当你必须调试以下内容时,才考虑进恢复模式执行 csrutil enable --without debug:

  • 调试 Apple 自带命令行工具(如 /usr/bin/swiftc、/usr/bin/clang)的底层行为
  • 用 CodeLLDB 加载系统 dylib 符号(如 libsystem_kernel.dylib)并单步进入系统调用
  • 在 M1/M2/M3 上跑 dlv-dap 调试 Go 程序,且该程序通过 syscall.Mmap 直接映射 /System 下的只读内存页

注意:csrutil enable --without debug 不等于关 SIP,它只豁免调试器对受保护路径的 ptrace 和内存附加权限,其他 SIP 保护(如文件写入、kext 加载)仍生效。执行后需重启,且每次系统更新都可能重置该设置。

VSCode 启动方式决定调试器权限边界

VSCode 本身是否以 sandboxed 方式启动,直接影响调试器能访问的资源范围:

  • 从 Dock 或 Launchpad 启动的 VSCode 默认启用 Full Disk Access 和 Accessibility 权限,但**不自动继承终端的环境变量或 sudo 权限**
  • 用 code --no-sandbox 启动会绕过部分 Electron 沙盒,但 macOS Gatekeeper 仍会拦截对 SIP 路径的访问
  • 绝对不要用 sudo code 启动——这会导致 VSCode 进程以 root 运行,但其子进程(如 debugpy)仍受限于 SIP 规则,且可能污染用户配置
  • 正确做法:在终端中 cd 到项目目录,运行 code .,让 VSCode 继承当前 shell 的 PATH 和权限上下文

最易被忽略的一点:即使你把脚本放对了位置、用了正确的 Python 解释器,如果 VSCode 是通过双击 App 图标启动的,它可能读不到你 shell 中配置的 PATH(比如 Homebrew 路径),导致它悄悄 fallback 到系统 /usr/bin/python3——这时检查 Developer: Toggle Developer Tools 控制台里的 process.env.PATH 就很关键。

热门AI工具

更多
PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

6299

2023.08.02

int占多少字节
int占多少字节

int占4个字节,意味着一个int变量可以存储范围在-2,147,483,648到2,147,483,647之间的整数值,在某些情况下也可能是2个字节或8个字节,int是一种常用的数据类型,用于表示整数,需要根据具体情况选择合适的数据类型,以确保程序的正确性和性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3045

2024.08.29

c++怎么把double转成int
c++怎么把double转成int

本专题整合了 c++ double相关教程,阅读专题下面的文章了解更多详细内容。

3948

2025.08.29

C++中int的含义
C++中int的含义

本专题整合了C++中int相关内容,阅读专题下面的文章了解更多详细内容。

2725

2025.08.29

vscode是什么_vscode怎么安装配置
vscode是什么_vscode怎么安装配置

VS Code(Visual Studio Code)是一款免费、开源的跨平台代码编辑器,由微软开发和维护。它被广泛用于软件开发和编程,支持多种编程语言和框架。VS Code 同时提供了丰富的功能和扩展性,使开发者可以高效地编写、编辑和调试代码。

1375

2023.06.30

vscode怎么运行代码
vscode怎么运行代码

vscode是一个运行于MacOS X、Windows和Linux之上的,针对于编写现代Web和云应用的跨平台源代码编辑器;vscode免费而且功能强大,对JavaScript和NodeJS的支持非常好,自带很多功能,例如代码格式化,代码智能提示补全、Emmet插件等。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2892

2023.07.21

vscode使用的框架介绍
vscode使用的框架介绍

VSCode是一款跨平台代码编辑器,它基于Electron框架和Monaco Editor构建。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

1989

2024.03.14

vscode一般用来写什么语言
vscode一般用来写什么语言

VSCode是一款功能强大的代码编辑器,支持多种编程语言和文件格式。它内置对 JavaScript、Python、Java、C++、TypeScript、HTML/CSS、Go 等语言的支持。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

1727

2024.03.14

OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

20

2026.10.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn