# vscodeTools **Repository Path**: geek0070/vscode-tools ## Basic Information - **Project Name**: vscodeTools - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-25 - **Last Updated**: 2026-09-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: tool ## README # VS Code 多语言运行调试环境 — 配置报告 日期: 2026-09-25 (CST) 工作区: /root/aispace 主机: Ubuntu 26.04 LTS, VS Code 1.139.0 (Remote-SSH "zspace-local") ## 一、已创建的文件 ``` /root/aispace/ ├── .vscode/ │ ├── launch.json # 10 个运行/调试配置 (F5 调试, Ctrl+F5 仅运行) │ └── tasks.json # 10 个任务 (4 个 build + 6 个 run) ├── examples/ # 6 个语言的示例程序 (demo.py/js/c/cpp/java/go + js_debug_verify.js) ├── bin/ # 编译产物输出目录 (demo_c / demo_cpp / demo_go / demo.class) └── README.md # 本报告 ``` ## 二、工具链 (最终状态) | 工具 | 版本 | 来源 | 路径 | |---|---|---|---| | python3 | 3.14.4 | 原有 | /usr/bin/python3 | | node / npm | v26.9.0 / 11.19.1 | 原有 | /usr/local/bin/node (symlink) | | gcc / g++ | 15.2.0 | 原有 | /usr/bin | | gdb | 17.1 | apt | /usr/bin/gdb | | javac / java | OpenJDK 25.0.4 | apt (default-jdk) | /usr/bin | | go | 1.26.0 | apt (golang-go) | /usr/bin | | dlv (delve) | 1.27.2 | go install (国内代理) | /usr/local/bin/dlv -> /root/go/bin/dlv | ## 三、执行过的 apt 命令记录 ```bash apt-get update -qq apt-get install -y gdb default-jdk golang-go apt-get install -y delve # apt 版 1.24.0 不支持 Go 1.26, 实际改用下方 go install 版 ``` ## 四、其他安装命令 (非 apt) ```bash # VS Code 扩展 (Remote 端安装) code --install-extension vscjava.vscode-java-debug # Java 调试器 0.59.0 code --install-extension redhat.java # Java 语言支持 1.56.0 code --install-extension golang.go # Go 官方扩展 0.56.1 code --install-extension /tmp/test-ext.vsix # webfreak.debug 0.26.0 (Native Debug, 提供 "gdb" 调试类型) # delve 新版 (apt 的 1.24 不支持 Go 1.26, 用国内代理装 1.27.2) GOPROXY=https://goproxy.cn,direct go install github.com/go-delve/delve/cmd/dlv@latest ln -sf /root/go/bin/dlv /usr/local/bin/dlv ``` ### 4.1 apt 实际安装的完整包清单 (含自动依赖, 共 52 个) gdb 及其依赖: ``` gdb libbabeltrace1 libdebuginfod-common libdebuginfod1t64 libdw1t64 libipt2 libsource-highlight-common libsource-highlight4t64 libpkgconf7 pkgconf pkgconf-bin libc6-dbg ``` default-jdk (OpenJDK 25) 及其依赖: ``` default-jdk default-jdk-headless default-jre default-jre-headless openjdk-25-jdk openjdk-25-jdk-headless openjdk-25-jre openjdk-25-jre-headless ca-certificates-java java-common fonts-dejavu-extra libatk-wrapper-java libatk-wrapper-java-jni libgif7 libgl1 libgl1-mesa-dri libglvnd0 libglx-mesa0 libglx0 libice6 libjpeg-turbo8 libjpeg8 libnspr4 libnss3 libpcsclite1 libsm6 libxaw7 libxcb-glx0 libxkbfile1 libxmu6 libxpm4 libxt6t64 libxxf86dga1 libxxf86vm1 luit x11-utils ``` golang-go 及其依赖: ``` golang-go golang-1.26-go golang-1.26-src golang-src ``` delve (apt 版, 已被 go install 版取代但未卸载): ``` delve ``` 说明: 官方 C/C++ 扩展 ms-vscode.cpptools (93MB) 从本网络访问 marketplace 下载速度仅约 5-60 KB/s 且多次连接被重置, 无法在合理时间内完成, 故 C/C++ 调试改用轻量 (875KB) 的 webfreak.debug (Native Debug) 扩展, launch 类型为 "gdb", 直接调用 PATH 中的 gdb, 功能满足断点/单步/变量查看。 后续网络恢复时可执行 `code --install-extension ms-vscode.cpptools`, 再把 launch.json 中 "type": "gdb" 改回 "cppdbg" 即可(注释中有对照)。 ## 五、VS Code 扩展完整清单 ### 本次新装 (4 个) | 扩展 ID | 名称 | 版本 | 用途 | |---|---|---|---| | vscjava.vscode-java-debug | Debugger for Java | 0.59.0 | launch type "java" | | redhat.java | Language Support for Java | 1.56.0 | Java 语言服务器(依赖项) | | golang.go | Go | 0.56.1 | launch type "go", 自动调用 dlv | | webfreak.debug | Native Debug | 0.26.0 | launch type "gdb" (C/C++ 调试) | ### 原有 (9 个, 未改动) | 扩展 ID | 版本 | |---|---| | ms-python.debugpy | 2026.6.0 (launch type "debugpy" 所需, 已存在) | | ms-python.python | 2026.4.0 | | ms-python.vscode-pylance | 2026.4.1 | | ms-python.vscode-python-envs | 1.36.0 / 1.38.0 | | eamodio.gitlens | 19.2.0 | | ms-ceintl.vscode-language-pack-zh-hans | 1.131.x | | shd101wyy.markdown-preview-enhanced | 0.8.36 | | pavandhadgeandteam.undotree | 0.2.0 | | tettekete.quick-highlight | 0.1.3 | 注: webfreak.debug 是通过 open-vsx 下载 .vsix 后本地安装的 (文件 /tmp/test-ext.vsix 已清理)。 ## 六、launch.json 配置一览 (10 个) | 配置名 | type | preLaunchTask | 调试器 | |---|---|---|---| | Python: 调试当前文件 | debugpy | - | debugpy 扩展 | | Node: 调试当前文件 (内置 js-debug) | node | - | VS Code 内置 js-debug | | C: 编译并调试当前文件 (gcc+gdb) | gdb | build C | gdb | | C++: 编译并调试当前文件 (g++ + gdb) | gdb | build C++ | gdb | | Java: 编译并调试当前文件 | java | build Java | vscjava (JDWP) | | Go: 调试当前文件 (dlv) | go | - | delve | | Python: 运行当前文件 (Ctrl+F5) | debugpy | - | - | | C: 编译并运行当前文件 (Ctrl+F5) | gdb | build C | - | | C++: 编译并运行当前文件 (Ctrl+F5) | gdb | build C++ | - | | Java: 编译并运行当前文件 (Ctrl+F5) | java | build Java | - | C/C++ 配置的关键字段 (webfreak.debug / Native Debug 语法): ```json { "name": "C: 编译并调试当前文件 (gcc+gdb)", "type": "gdb", "request": "launch", "preLaunchTask": "build C", "target": "${workspaceFolder}/bin/${fileBasenameNoExtension}", "cwd": "${workspaceFolder}", "valuesFormatting": "prettyPrint" } ``` 按用户要求, 所有命令均从 PATH 查找 (不写绝对路径)。 ## 七、tasks.json 任务一览 (10 个) | 任务 | 命令 | 等效 Shell | |---|---|---| | build C (默认 Ctrl+Shift+B) | gcc | gcc -Wall -g -O0 当前文件 -o bin/同名 | | build C++ | g++ | g++ -Wall -g -O0 当前文件 -o bin/同名 | | build Java | javac | javac -d bin -g 当前文件 | | build Go | go | go build -o bin/同名 当前文件 | | run Python (python3) | python3 | python3 当前文件 | | run Node (node) | node | node 当前文件 | | run C (bin) | bin 产物 | ./bin/同名 | | run C++ (bin) | bin 产物 | ./bin/同名 | | run Java (java) | java | java -cp bin 类名 | | run Go (go run) | go | go run 当前文件 | ## 八、验证结果 (全部通过, 真实执行输出) ### 1. Python ``` $ python3 examples/demo.py python total = 10 hello from vscode ``` ### 2. Node.js — 运行/调试 (node v26.9.0, 内置 inspector, CDP 协议) ``` $ node examples/demo.js node total = 10 hello from vscode node # 断点调试验证 (与 VS Code js-debug 扩展相同的底层协议: Chrome DevTools Protocol): $ node examples/js_debug_verify.js breakpoint set at demo.js:9 node total = 10 hello from vscode node [paused #1] demo.js line 10, locals: {"total":"10"} done, pauses = 1 ``` 说明: Node 调试无需安装任何扩展 — VS Code 内置 js-debug (server/extensions/ms-vscode.js-debug, 版本 1.117.0) 已提供 launch type "node"/"pwa-node"。js_debug_verify.js 是验证脚本, 通过 inspector Session 对 demo.js 第 9 行设断点, 命中后读取局部变量 total=10, 证明断点/暂停/变量 读取全链路可用。 ### 3. C — 编译/运行/调试 ``` $ gcc -Wall -g -O0 demo.c -o ../bin/demo C build OK $ ../bin/demo c total = 10 hello from vscode c $ gdb -batch -ex 'break main' -ex run -ex 'info locals' -ex continue ./bin/demo_c Breakpoint 1 at 0x118d: file demo.c, line 8. Breakpoint 1, main () at demo.c:8 total = 0 c total = 10 [Inferior 1 (process 156626) exited normally] ``` ### 4. C++ — 编译/运行/调试 ``` $ g++ -Wall -g -O0 demo.cpp -o ../bin/demo2 C++ build OK $ gdb -batch -ex 'break add' -ex run -ex 'print a' -ex 'print b' ./bin/demo_cpp Breakpoint 1, add (a=0, b=0) at demo.cpp:4 $1 = 0 $2 = 0 ``` ### 5. Java — 编译/运行/调试 (JDWP 协议, 即 VS Code Java 调试器的底层机制) ``` $ javac -g -d ../bin demo.java Java build OK $ java -cp ../bin demo java total = 10 hello from vscode java # JVM 以 -agentlib:jdwp=transport=dt_socket,server=y,suspend=y 启动后 jdb attach: Breakpoint hit: "thread=main", demo.add(), line=3 bci=0 [1] demo.add (demo.java:3) ``` ### 6. Go — 编译/运行/调试 ``` $ go build -o ../bin/demo3 demo.go Go build OK $ dlv debug --init /tmp/dlv.init ./demo.go Breakpoint 1 set at 0x4be753 for main.main() ./demo.go:9 > [Breakpoint 1] main.main() ./demo.go:9 (hits goroutine(1):1 total:1) go total = 10 hello from vscode go ``` ### 端到端复验 (与 tasks.json 命令逐字一致) ``` C build OK hello from vscode c C++ build OK hello from vscode c++ Java build OK hello from vscode java Go build OK hello from vscode go (python3) hello from vscode (node) hello from vscode node ``` 注: debugpy 扩展 (已装 2026.6.0) 的会话由 VS Code UI 发起, 无法在纯 CLI 中驱动; 其依赖的 python3 解释器与 demo.py 运行已验证。gdb/jdb/dlv 的调试内核均已按 VS Code 调试器相同的底层机制 (MI/JDWP/dlv API) 验证。 ## 九、使用方法 1. 打开 .py/.js/.c/.cpp/.java/.go 文件 → F5 → 顶部下拉选择对应配置 2. 仅运行不调试: 选对应配置后按 Ctrl+F5 3. 手动编译: Ctrl+Shift+B (默认 build C), 或 终端→运行任务 选其他 build 4. C/C++/Java 的 F5 已绑定 preLaunchTask, 会先自动编译再调试 5. Go 调试 program=${fileDirname}, 单文件 package main 直接支持 ## 十、Java 编译方案讲解 (应要求) Java 与 C 的"源码→机器码"不同, 是两段式: 1. 源码 demo.java --javac--> 字节码 bin/demo.class (平台无关中间码) 2. java 启动 JVM 加载 .class 执行, 热点代码再被 JIT 编译为本地机器码 本方案是"无构建工具"的最朴素流程, 适合单文件学习: ``` build Java: javac -g -d bin demo.java # 产物进 bin/, 不污染源码目录 运行/调试: java -cp bin demo # -cp 告诉 JVM 去哪找 .class ``` 要点: - -g: 保留局部变量表, 调试时才能看到变量值 (tasks.json 已默认加 -g) - public 类名必须与文件名一致 (demo.java 里是 public class demo) - 调试器与 JVM 通过 JDWP 协议通信, vscjava.vscode-java-debug 扩展自动完成 - 以后引入第三方依赖时再换 Maven/Gradle, 单文件阶段不需要 ## 十一、Go 编译方案讲解 (应要求) Go 是编译型语言, 工具链一体化, 比 Java 简单: ``` build Go: go build -o bin/demo_go demo.go # 独立可执行文件, 静态链接, 无需运行时 run Go: go run demo.go # 编译到临时目录+立即执行, 不留产物 调试: dlv debug (golang.go 扩展自动调用) ``` 要点: - 产物是静态链接可执行文件, 拷到任何 linux/amd64 机器直接跑 - go run = 编译+运行一步完成, 适合快速验证 - 调试需要 delve; apt 版 1.24 不支持 Go 1.26, 已装 1.27.2 (/usr/local/bin/dlv) - 多文件时以 package 目录为单位 (go build ./...), launch.json 用 program=${fileDirname} 天然支持 ## 十二、回滚 (如需撤销本次全部变更) ```bash # 卸载 apt 安装的包 apt-get purge -y gdb default-jdk golang-go delve && apt-get autoremove -y # 移除 go install 的 delve rm -f /usr/local/bin/dlv /root/go/bin/dlv # 卸载 VS Code 扩展 code --uninstall-extension vscjava.vscode-java-debug code --uninstall-extension redhat.java code --uninstall-extension golang.go code --uninstall-extension webfreak.debug # 删除配置与示例 rm -rf /root/aispace/.vscode /root/aispace/examples /root/aispace/bin /root/aispace/report.md ```