<p>VSCode 运行 Pascal 需手动配置 fpc:先确保终端可执行 fpc -i,再在 tasks.json 中添加 -g 和 -O- 参数生成调试信息,launch.json 的 program 必须严格匹配输出文件名,且修改配置后需重载窗口生效。</p>
VSCode 不能直接运行 Pascal 代码——它必须调用你本地安装的 fpc,且 tasks.json 和 launch.json 配置稍有偏差,就会编译失败、调试断点不生效、变量显示为 <optimized out>。
fpc 已正确安装并能被终端识别这是所有后续操作的前提。VSCode 不自带编译器,也不自动扫描系统目录;它只执行你写的命令,而命令能否跑通,全看终端里 fpc 是否可用。
fpc -i
FPC 3.2.2 的版本信息,说明已就位;若报 command not found 或 不是内部或外部命令,需检查 PATHC:FPC3.2.2bini386-win32 或 C:lazarusfpc3.2.2binx86_64-win64,添加时只填到 bin 目录层级,不要带 fpc.exe
brew install fpc,装完后通常自动加入 PATH;若手动安装,检查 /usr/local/bin/fpc 是否存在tasks.json 必须含 -g 和 -O- 才能调试只写 fpc ${file} 能生成可执行文件,但无法调试:缺调试符号,变量不可见,断点错位。调试依赖的是编译器输出的 DWARF 信息(macOS/Linux)或 CodeView(Windows),而这需要显式开启。
"args": ["-g", "-O-", "${file}"] 是底线配置:-g 输出调试符号,-O- 关闭所有优化(注意是大写字母 O 加短横,不是数字 0)-g 和 -O- 缺一不可;-O0 在部分 FPC 版本中等效,但 -O- 更通用、更稳妥-v(verbose):出错时能看到具体哪个单元加载失败,比默认静默输出有用得多label 字段(如 "label": "build")必须和 launch.json 中的 preLaunchTask 完全一致,包括大小写和空格launch.json 的 program 必须匹配实际输出名FPC 默认把 hello.pas 编译成 hello(macOS/Linux)或 hello.exe(Windows)。VSCode 调试器不会自动补后缀,也不会猜路径——写错一个字符,就会报 “unable to launch program” 且无明确提示。
tasks.json 编译后生成的文件名,与 launch.json 中 "program": "./hello" 或 "program": "./hello.exe" 严格一致CodeLLDB 扩展 + lldb;Windows 可用 CodeLLDB(通过 WSL)或原生 gdb(需额外装 MinGW-w64)sourceMap 很关键:如果项目不在根目录下,或源码路径含中文/空格,需显式映射,例如 {"./src/": "${workspaceFolder}/src/"}
launch.json 后,务必重启 VSCode——它不热重载调试配置Ctrl+Shift+P → Tasks: Run Task → 选你的 label,确认终端真能编译成功,再点 ▶️ 调试装了 Pascal(alefragnani)或 Modern Pascal(be5invis)这类扩展,你才能对 .pas 文件做跳转、补全、括号匹配;但它不参与构建流程,也不读取 fpc 路径,更不会帮你写 tasks.json。
settings.json 中手动绑定文件类型:"files.associations": {"*.pas": "pascal", "*.dpr": "pascal"}
hello.pas 可能被识别为纯文本,没有语法高亮,也无法触发任何 Pascal 相关功能strict private、class helper)不受支持——FPC 编译器本身不认这些,扩展更不会模拟 Embarcadero 的语义分析program、unit 等基础模板,但得先确保语言模式已激活(右下角状态栏显示 “Pascal”)最容易被忽略的是:每次改完 tasks.json 或 launch.json,都必须重载 VSCode 窗口(Ctrl+Shift+P → Developer: Reload Window),否则新配置不生效——这不是 bug,是 VSCode 的设计行为。