ワンクリックで
cangjie-cjdb
仓颉调试工具 cjdb。当需要了解如何使用 cjdb 调试仓颉程序,包括启动调试、设置断点(源码断点/函数断点/条件断点)、单步执行、查看和修改变量、表达式计算、观察点、仓颉线程调试、launch/attach 调试方式等,应使用此 Skill。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
仓颉调试工具 cjdb。当需要了解如何使用 cjdb 调试仓颉程序,包括启动调试、设置断点(源码断点/函数断点/条件断点)、单步执行、查看和修改变量、表达式计算、观察点、仓颉线程调试、launch/attach 调试方式等,应使用此 Skill。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
当需要构建鸿蒙应用项目时,使用此 Skill 执行构建流程。此 Skill 包含完整的构建命令、构建流程说明、构建失败处理流程。构建脚本会自动执行依赖安装、仓颉预编译、资源生成、编译、打包等步骤。
在鸿蒙应用(Cangjie)开发中,当需要使用 stdx 拓展库(如 crypto、encoding、net、log、actors 等),或在构建/链接阶段出现 stdx 相关错误时,使用此 Skill 获取/解压 stdx 包,并指导在 entry/cjpm.toml 中正确配置 bin-dependencies.path-option。
在进行仓颉工程或鸿蒙应用开发时的第一步,应该优先读取该SKILL,用来确定后续的开发步骤。
仓颉语言内置注解。当需要了解仓颉 SDK 提供的内置注解(@sourcePackage/@sourceFile/@sourceLine/@When/@FastNative/@Frozen/@Attribute/@Deprecated)的用途、语法和最优实践时,应使用此 Skill。
仓颉语言附录参考。当需要查阅仓颉语言的关键字列表、运算符优先级与结合性、运算符重载函数签名、运行时环境变量配置、包兼容性规则、TokenKind枚举类型时,应使用此 Skill。
仓颉标准库 Array 类型详细指南。当需要了解 Array 的构造、元素访问、切片、拼接、查找、排序、拷贝、反转、映射、扁平化等操作的完整 API 和用法时,应使用此 Skill。
| name | cangjie-cjdb |
| description | 仓颉调试工具 cjdb。当需要了解如何使用 cjdb 调试仓颉程序,包括启动调试、设置断点(源码断点/函数断点/条件断点)、单步执行、查看和修改变量、表达式计算、观察点、仓颉线程调试、launch/attach 调试方式等,应使用此 Skill。 |
cjdb 是基于 lldb 开发的仓颉程序命令行调试工具,位于 SDK 的 cangjie/tools/bin 路径下。支持 Windows、Linux、macOS 平台。
debug 模式编译:cjc -g test.cj -o testcjdb 和编译器来自同一版本工具链# 方式一:启动时加载程序
cjdb ./test
# 方式二:先启动再加载
cjdb
(cjdb) file test
cjdb
(cjdb) attach <pid> # 附加到正在运行的进程
(cjdb) b test.cj:4 # 简写
(cjdb) breakpoint set --file test.cj --line 4 # 完整写法
(cjdb) b test # 简写
(cjdb) breakpoint set --name test # 完整写法
(cjdb) breakpoint set --file test.cj --line 4 --condition a==12
(cjdb) c # 运行到下一个断点
| 命令 | 简写 | 说明 |
|---|---|---|
thread step-over | n / next | 单步跳过(不进入函数) |
thread step-in | s / step | 单步进入(进入有调试信息的函数) |
finish | — | 执行完当前函数并返回上层 |
(cjdb) locals # 查看所有局部变量
(cjdb) globals # 查看所有全局变量
(cjdb) p variableName # 查看单个变量(简写 print)
(cjdb) p array[1..3] # 查看数组区间(左闭右开)
支持类型:基础类型、String、struct/class、Array、CString、Enum。
(cjdb) set a=30 # 仅支持基础数值类型
(cjdb) set b=0 # Bool: 0=false, 非0=true
(cjdb) set c=0x41 # Rune: 使用 ASCII 码
(cjdb) expr 3 # 字面量
(cjdb) expr a + b # 算术表达式
(cjdb) expr a > b # 关系表达式
(cjdb) expr value.member # 成员访问
(cjdb) expr array[2] # 索引访问
注意:不支持带命名参数的函数调用、互操作、扩展、属性、插值字符串。Windows 不支持 Float16 和异常抛出。
(cjdb) wa s v -w read a # 读观察点
(cjdb) wa s v -w write a # 写观察点
(cjdb) wa s v -w read_write a # 读写观察点
仅支持基础类型。
(cjdb) cjthread list # 列出所有仓颉线程
(cjdb) cjthread backtrace 1 # 查看指定线程调用栈
(cjdb) log enable # 启用日志
(cjdb) log list # 查看支持的日志列表
| 问题 | 解决方案 |
|---|---|
Docker 下报 packet returned an error: 8 | 创建容器时加 --cap-add=SYS_PTRACE --security-opt seccomp=unconfined |
持续报 signal SIGABRT | process handle --pass true --stop false --notify true SIGBUS |
无法通过 next/s 进入 catch 块 | 在 catch 块内打断点 |
| 泛型变元名显示为 T0, T1 | 仓颉 ABI 兼容设计,非错误 |