## debugger\_t ### 概述 调试器接口。 ---------------------------------- ### 函数

| 函数名称 | 说明 | | -------- | ------------ | | debugger\_attach | 附近到指定的代码片段。 | | debugger\_clear\_break\_points | 清除全部断点。 | | debugger\_continue | 执行到下一个断点。 | | debugger\_deinit | 释放资源。 | | debugger\_dispatch\_messages | dispatch_messages(仅适用于客户端) | | debugger\_get\_break\_points | 获取断点列表。 | | debugger\_get\_callstack | 获取当前线程的callstack。 | | debugger\_get\_code | 获取代码。 | | debugger\_get\_current\_frame | 获取当前callstack的frame。 | | debugger\_get\_current\_thread\_id | 获取当前线程 ID。 | | debugger\_get\_debuggers | 获取调试器列表。 | | debugger\_get\_global | 获取全局对象。 | | debugger\_get\_local | 获取局部变量对象。 | | debugger\_get\_self | 获取self对象。 | | debugger\_get\_state | 获取调试状态。 | | debugger\_get\_threads | 获取线程(仅用于调试原生程序,脚本不支持)。 | | debugger\_get\_var | 获取变量的详细信息。 | | debugger\_is\_paused | 查看当前是否处于暂停状态。 | | debugger\_is\_paused\_or\_running | 查看当前是否处于暂停运行状态。 | | debugger\_is\_running | 查看当前是否处于运行状态。 | | debugger\_launch | 执行代码。 | | debugger\_launch\_app | 执行程序(仅用于调试原生程序,脚本不支持)。 | | debugger\_lock | 锁定debugger对象。 | | debugger\_match | 检查code_id是否与当前debugger匹配。 | | debugger\_pause | 暂停运行。 | | debugger\_remove\_break\_point | 清除断点。 | | debugger\_remove\_break\_point\_ex | 清除断点。 | | debugger\_restart | 重新运行。 | | debugger\_set\_break\_point | 设置断点。 | | debugger\_set\_break\_point\_ex | 设置断点。 | | debugger\_set\_current\_frame | 从callstack中选择当前的frame。 | | debugger\_set\_current\_thread\_id | 设置当前处于哪个一个线程的上下文中。 | | debugger\_set\_state | 设置状态。 | | debugger\_step\_in | 进入函数。 | | debugger\_step\_loop\_over | 执行下一条语句(跳过循环) | | debugger\_step\_out | 执行到函数结束。 | | debugger\_step\_over | 执行到下一行代码。(不进入函数) | | debugger\_stop | 终止程序运行。 | | debugger\_unlock | 解锁debugger对象。 | | debugger\_update\_code | 更新代码。 | #### debugger\_attach 函数 ----------------------- * 函数功能: >

附近到指定的代码片段。 * 函数原型: ``` ret_t debugger_attach (debugger_t* debugger, const char* lang, const char* code_id); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | debugger | debugger\_t* | debugger对象。 | | lang | const char* | 代码的语言。 | | code\_id | const char* | 代码的ID。 | #### debugger\_clear\_break\_points 函数 ----------------------- * 函数功能: >

清除全部断点。 * 函数原型: ``` ret_t debugger_clear_break_points (debugger_t* debugger); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | debugger | debugger\_t* | debugger对象。 | #### debugger\_continue 函数 ----------------------- * 函数功能: >

执行到下一个断点。 > 处于暂停状态才能执行本命令。 * 函数原型: ``` ret_t debugger_continue (debugger_t* debugger); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | debugger | debugger\_t* | debugger对象。 | #### debugger\_deinit 函数 ----------------------- * 函数功能: >

释放资源。 * 函数原型: ``` ret_t debugger_deinit (debugger_t* debugger); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | debugger | debugger\_t* | debugger对象。 | #### debugger\_dispatch\_messages 函数 ----------------------- * 函数功能: >

dispatch_messages(仅适用于客户端) * 函数原型: ``` ret_t debugger_dispatch_messages (debugger_t* debugger, uint32_t timeout, uint32_t* ret_num); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | debugger | debugger\_t* | debugger对象。 | | timeout | uint32\_t | 超时时间。 | | ret\_num | uint32\_t* | 返回处理命令个数。 | #### debugger\_get\_break\_points 函数 ----------------------- * 函数功能: >

获取断点列表。 * 函数原型: ``` ret_t debugger_get_break_points (debugger_t* debugger, binary_data_t* break_points); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | debugger | debugger\_t* | debugger对象。 | | break\_points | binary\_data\_t* | 断点列表(每行一个)。 | #### debugger\_get\_callstack 函数 ----------------------- * 函数功能: >

获取当前线程的callstack。 * 函数原型: ``` tk_object_t* debugger_get_callstack (debugger_t* debugger); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | tk\_object\_t* | 返回堆栈信息。 | | debugger | debugger\_t* | debugger对象。 | #### debugger\_get\_code 函数 ----------------------- * 函数功能: >

获取代码。 * 函数原型: ``` ret_t debugger_get_code (debugger_t* debugger, binary_data_t* code); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | debugger | debugger\_t* | debugger对象。 | | code | binary\_data\_t* | 代码。 | #### debugger\_get\_current\_frame 函数 ----------------------- * 函数功能: >

获取当前callstack的frame。 > 处于暂停状态才能执行本命令。 * 函数原型: ``` int32_t debugger_get_current_frame (debugger_t* debugger); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | int32\_t | 成功返回frame序数(0表示当前),失败返回-1。 | | debugger | debugger\_t* | debugger对象。 | #### debugger\_get\_current\_thread\_id 函数 ----------------------- * 函数功能: >

获取当前线程 ID。 > 处于暂停状态才能执行本命令。 * 函数原型: ``` uint64_t debugger_get_current_thread_id (debugger_t* debugger); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | uint64\_t | 成功返回线程 ID,失败返回 0。 | | debugger | debugger\_t* | debugger对象。 | #### debugger\_get\_debuggers 函数 ----------------------- * 函数功能: >

获取调试器列表。 * 函数原型: ``` ret_t debugger_get_debuggers (debugger_t* debugger, binary_data_t* debuggers); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | debugger | debugger\_t* | debugger对象。 | | debuggers | binary\_data\_t* | 调试器列表(每行一个)。 | #### debugger\_get\_global 函数 ----------------------- * 函数功能: >

获取全局对象。 > 处于暂停状态才能执行本命令。 返回数据结构请参考:https://microsoft.github.io/debug-adapter-protocol/specification#Requests_Variables * 函数原型: ``` tk_object_t* debugger_get_global (debugger_t* debugger); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | tk\_object\_t* | 返回全局对象。 | | debugger | debugger\_t* | debugger对象。 | #### debugger\_get\_local 函数 ----------------------- * 函数功能: >

获取局部变量对象。 返回数据结构请参考:https://microsoft.github.io/debug-adapter-protocol/specification#Requests_Variables > 处于暂停状态才能执行本命令。 * 函数原型: ``` tk_object_t* debugger_get_local (debugger_t* debugger, uint32_t frame_index); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | tk\_object\_t* | 返回局部变量对象。 | | debugger | debugger\_t* | debugger对象。 | | frame\_index | uint32\_t | frame序数(0开始)。 | #### debugger\_get\_self 函数 ----------------------- * 函数功能: >

获取self对象。 返回数据结构请参考:https://microsoft.github.io/debug-adapter-protocol/specification#Requests_Variables > 处于暂停状态才能执行本命令。 * 函数原型: ``` tk_object_t* debugger_get_self (debugger_t* debugger); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | tk\_object\_t* | 返回self对象。 | | debugger | debugger\_t* | debugger对象。 | #### debugger\_get\_state 函数 ----------------------- * 函数功能: >

获取调试状态。 * 函数原型: ``` debugger_program_state_t debugger_get_state (debugger_t* debugger); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | debugger\_program\_state\_t | 返回调试状态。 | | debugger | debugger\_t* | debugger对象。 | #### debugger\_get\_threads 函数 ----------------------- * 函数功能: >

获取线程(仅用于调试原生程序,脚本不支持)。 返回数据结构请参考: https://microsoft.github.io/debug-adapter-protocol/specification#Requests_Threads > 处于暂停状态才能执行本命令。 * 函数原型: ``` tk_object_t* debugger_get_threads (debugger_t* debugger); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | tk\_object\_t* | 返回全局对象。 | | debugger | debugger\_t* | debugger对象。 | #### debugger\_get\_var 函数 ----------------------- * 函数功能: >

获取变量的详细信息。 返回数据结构请参考:https://microsoft.github.io/debug-adapter-protocol/specification#Requests_Variables > 处于暂停状态才能执行本命令。 > 可以为路径,如: > * a.name 为结构a下的成员name。 > * a.names[1].first为结构a下的成员names数组中第二个元素下的first成员。 * 函数原型: ``` tk_object_t* debugger_get_var (debugger_t* debugger, const char* path); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | tk\_object\_t* | 返回全局对象。 | | debugger | debugger\_t* | debugger对象。 | | path | const char* | 变量名或路径。为空或NULL时,返回全部变量。 | #### debugger\_is\_paused 函数 ----------------------- * 函数功能: >

查看当前是否处于暂停状态。 * 函数原型: ``` bool_t debugger_is_paused (debugger_t* debugger); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | bool\_t | 返回TRUE表示处于暂停运行状态。 | | debugger | debugger\_t* | debugger对象。 | #### debugger\_is\_paused\_or\_running 函数 ----------------------- * 函数功能: >

查看当前是否处于暂停运行状态。 * 函数原型: ``` bool_t debugger_is_paused_or_running (debugger_t* debugger); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | bool\_t | 返回TRUE表示处于暂停运行状态。 | | debugger | debugger\_t* | debugger对象。 | #### debugger\_is\_running 函数 ----------------------- * 函数功能: >

查看当前是否处于运行状态。 * 函数原型: ``` bool_t debugger_is_running (debugger_t* debugger); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | bool\_t | 返回TRUE表示处于暂停运行状态。 | | debugger | debugger\_t* | debugger对象。 | #### debugger\_launch 函数 ----------------------- * 函数功能: >

执行代码。 * 函数原型: ``` ret_t debugger_launch (debugger_t* debugger, const char* lang, const binary_data_t* code); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | debugger | debugger\_t* | debugger对象。 | | lang | const char* | 代码的语言。 | | code | const binary\_data\_t* | 代码。 | #### debugger\_launch\_app 函数 ----------------------- * 函数功能: >

执行程序(仅用于调试原生程序,脚本不支持)。 * 函数原型: ``` ret_t debugger_launch_app (debugger_t* debugger, const char* program, const char* work_dir, int argc, char** argv); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | debugger | debugger\_t* | debugger对象。 | | program | const char* | 程序。 | | work\_dir | const char* | 工作目录。 | | argc | int | 参数个数。 | | argv | char** | 参数列表。 | #### debugger\_lock 函数 ----------------------- * 函数功能: >

锁定debugger对象。 * 函数原型: ``` ret_t debugger_lock (debugger_t* debugger); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | debugger | debugger\_t* | debugger对象。 | #### debugger\_match 函数 ----------------------- * 函数功能: >

检查code_id是否与当前debugger匹配。 * 函数原型: ``` bool_t debugger_match (debugger_t* debugger, const char* code_id); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | bool\_t | 返回TRUE表示匹配到。 | | debugger | debugger\_t* | debugger对象。 | | code\_id | const char* | 代码ID。 | #### debugger\_pause 函数 ----------------------- * 函数功能: >

暂停运行。 > 暂停后才能执行next/step_xxx等函数。 * 函数原型: ``` ret_t debugger_pause (debugger_t* debugger); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | debugger | debugger\_t* | debugger对象。 | #### debugger\_remove\_break\_point 函数 ----------------------- * 函数功能: >

清除断点。 * 函数原型: ``` ret_t debugger_remove_break_point (debugger_t* debugger, uint32_t line); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | debugger | debugger\_t* | debugger对象。 | | line | uint32\_t | 代码行号。 | #### debugger\_remove\_break\_point\_ex 函数 ----------------------- * 函数功能: >

清除断点。 * 函数原型: ``` ret_t debugger_remove_break_point_ex (debugger_t* debugger, const char* position); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | debugger | debugger\_t* | debugger对象。 | | position | const char* | 位置(函数名或文件名:行号)。 | #### debugger\_restart 函数 ----------------------- * 函数功能: >

重新运行。 * 函数原型: ``` ret_t debugger_restart (debugger_t* debugger); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | debugger | debugger\_t* | debugger对象。 | #### debugger\_set\_break\_point 函数 ----------------------- * 函数功能: >

设置断点。 * 函数原型: ``` ret_t debugger_set_break_point (debugger_t* debugger, uint32_t line); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | debugger | debugger\_t* | debugger对象。 | | line | uint32\_t | 代码行号。 | #### debugger\_set\_break\_point\_ex 函数 ----------------------- * 函数功能: >

设置断点。 * 函数原型: ``` ret_t debugger_set_break_point_ex (debugger_t* debugger, const char* position); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | debugger | debugger\_t* | debugger对象。 | | position | const char* | 位置(函数名或文件名:行号)。 | #### debugger\_set\_current\_frame 函数 ----------------------- * 函数功能: >

从callstack中选择当前的frame。 > 处于暂停状态才能执行本命令。 * 函数原型: ``` ret_t debugger_set_current_frame (debugger_t* debugger, uint32_t frame_index); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | debugger | debugger\_t* | debugger对象。 | | frame\_index | uint32\_t | frame序数(0表示当前) | #### debugger\_set\_current\_thread\_id 函数 ----------------------- * 函数功能: >

设置当前处于哪个一个线程的上下文中。 > 处于暂停状态才能执行本命令。 * 函数原型: ``` ret_t debugger_set_current_thread_id (debugger_t* debugger, uint64_t thread_id); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | debugger | debugger\_t* | debugger对象。 | | thread\_id | uint64\_t | 线程 id | #### debugger\_set\_state 函数 ----------------------- * 函数功能: >

设置状态。 * 函数原型: ``` ret_t debugger_set_state (debugger_t* debugger, debugger_program_state_t state); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | debugger | debugger\_t* | debugger对象。 | | state | debugger\_program\_state\_t | 状态。 | #### debugger\_step\_in 函数 ----------------------- * 函数功能: >

进入函数。 > 处于暂停状态才能执行本命令。 * 函数原型: ``` ret_t debugger_step_in (debugger_t* debugger); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | debugger | debugger\_t* | debugger对象。 | #### debugger\_step\_loop\_over 函数 ----------------------- * 函数功能: >

执行下一条语句(跳过循环) > 处于暂停状态才能执行本命令。 * 函数原型: ``` ret_t debugger_step_loop_over (debugger_t* debugger); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | debugger | debugger\_t* | debugger对象。 | #### debugger\_step\_out 函数 ----------------------- * 函数功能: >

执行到函数结束。 > 处于暂停状态才能执行本命令。 * 函数原型: ``` ret_t debugger_step_out (debugger_t* debugger); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | debugger | debugger\_t* | debugger对象。 | #### debugger\_step\_over 函数 ----------------------- * 函数功能: >

执行到下一行代码。(不进入函数) > 处于暂停状态才能执行本命令。 * 函数原型: ``` ret_t debugger_step_over (debugger_t* debugger); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | debugger | debugger\_t* | debugger对象。 | #### debugger\_stop 函数 ----------------------- * 函数功能: >

终止程序运行。 * 函数原型: ``` ret_t debugger_stop (debugger_t* debugger); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | debugger | debugger\_t* | debugger对象。 | #### debugger\_unlock 函数 ----------------------- * 函数功能: >

解锁debugger对象。 * 函数原型: ``` ret_t debugger_unlock (debugger_t* debugger); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | debugger | debugger\_t* | debugger对象。 | #### debugger\_update\_code 函数 ----------------------- * 函数功能: >

更新代码。 * 函数原型: ``` ret_t debugger_update_code (debugger_t* debugger, const binary_data_t* code); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | debugger | debugger\_t* | debugger对象。 | | code | const binary\_data\_t* | 代码。 |