调试器

通过调试器 cjdb 提供源码级调试能力,支持仓颉跨语言调试,比如单步进入/退出跨语言函数代码、跨语言下的完整调用栈查看,一个调试器完成多种语言的调试,同时支持对仓颉线程进行调试,进一步提升用户调试体验。

跨语言调试

调试器在单步过程中识别跨语言互操作胶水代码层,自动计算目标函数地址,过滤用户不关心的胶水代码,使得跨语言函数调用的单步进入/退出与普通函数调用无异,多种语言调用栈能够自动拼接展示,带给开发者的调试体验更佳。在下面的图中,展示了 IDE 中仓颉调用 C 函数的跨语言调试。

图示 1:仓颉->C 跨语言调用 test2c

图示 2:仓颉->C 跨语言单步进入 in2c

图示 3:仓颉->C 跨语言调用栈,FFI-C 函数内单步调试 ffi2c

仓颉线程调试

仓颉支持基于仓颉线程的多线程并发编程,仓颉程序执行时仓颉线程与系统线程是 M:N 的关系,仓颉线程数量往往非常庞大。由于仓颉线程之间的调用是异步的,如果出现异常,无法像普通程序那样进行捕获和处理。仓颉调试器支持对仓颉线程设置断点,查看仓颉线程的调用栈。

threadbebugone

threadbebugtwo