awtk/docs/manual/debugger_t.md

858 lines
24 KiB
Markdown
Raw Normal View History

2022-12-05 12:10:53 +08:00
## debugger\_t
### 概述
调试器接口。
----------------------------------
### 函数
<p id="debugger_t_methods">
| 函数名称 | 说明 |
| -------- | ------------ |
| <a href="#debugger_t_debugger_attach">debugger\_attach</a> | 附近到指定的代码片段。 |
| <a href="#debugger_t_debugger_clear_break_points">debugger\_clear\_break\_points</a> | 清除全部断点。 |
| <a href="#debugger_t_debugger_continue">debugger\_continue</a> | 执行到下一个断点。 |
| <a href="#debugger_t_debugger_deinit">debugger\_deinit</a> | 释放资源。 |
2023-06-29 10:44:29 +08:00
| <a href="#debugger_t_debugger_dispatch_messages">debugger\_dispatch\_messages</a> | dispatch_messages(仅适用于客户端) |
2022-12-05 12:10:53 +08:00
| <a href="#debugger_t_debugger_get_break_points">debugger\_get\_break\_points</a> | 获取断点列表。 |
2023-12-26 19:09:36 +08:00
| <a href="#debugger_t_debugger_get_callstack">debugger\_get\_callstack</a> | 获取当前线程的callstack。 |
2022-12-05 12:10:53 +08:00
| <a href="#debugger_t_debugger_get_code">debugger\_get\_code</a> | 获取代码。 |
2023-12-26 19:09:36 +08:00
| <a href="#debugger_t_debugger_get_current_frame">debugger\_get\_current\_frame</a> | 获取当前callstack的frame。 |
| <a href="#debugger_t_debugger_get_current_thread_id">debugger\_get\_current\_thread\_id</a> | 获取当前线程 ID。 |
2022-12-05 12:10:53 +08:00
| <a href="#debugger_t_debugger_get_debuggers">debugger\_get\_debuggers</a> | 获取调试器列表。 |
| <a href="#debugger_t_debugger_get_global">debugger\_get\_global</a> | 获取全局对象。 |
| <a href="#debugger_t_debugger_get_local">debugger\_get\_local</a> | 获取局部变量对象。 |
| <a href="#debugger_t_debugger_get_self">debugger\_get\_self</a> | 获取self对象。 |
2023-06-29 10:44:29 +08:00
| <a href="#debugger_t_debugger_get_state">debugger\_get\_state</a> | 获取调试状态。 |
| <a href="#debugger_t_debugger_get_threads">debugger\_get\_threads</a> | 获取线程(仅用于调试原生程序,脚本不支持)。 |
| <a href="#debugger_t_debugger_get_var">debugger\_get\_var</a> | 获取变量的详细信息。 |
| <a href="#debugger_t_debugger_is_paused">debugger\_is\_paused</a> | 查看当前是否处于暂停状态。 |
| <a href="#debugger_t_debugger_is_paused_or_running">debugger\_is\_paused\_or\_running</a> | 查看当前是否处于暂停运行状态。 |
| <a href="#debugger_t_debugger_is_running">debugger\_is\_running</a> | 查看当前是否处于运行状态。 |
2022-12-05 12:10:53 +08:00
| <a href="#debugger_t_debugger_launch">debugger\_launch</a> | 执行代码。 |
2023-12-26 19:09:36 +08:00
| <a href="#debugger_t_debugger_launch_app">debugger\_launch\_app</a> | 执行程序(仅用于调试原生程序,脚本不支持)。 |
2022-12-05 12:10:53 +08:00
| <a href="#debugger_t_debugger_lock">debugger\_lock</a> | 锁定debugger对象。 |
| <a href="#debugger_t_debugger_match">debugger\_match</a> | 检查code_id是否与当前debugger匹配。 |
| <a href="#debugger_t_debugger_pause">debugger\_pause</a> | 暂停运行。 |
| <a href="#debugger_t_debugger_remove_break_point">debugger\_remove\_break\_point</a> | 清除断点。 |
2023-06-29 10:44:29 +08:00
| <a href="#debugger_t_debugger_remove_break_point_ex">debugger\_remove\_break\_point\_ex</a> | 清除断点。 |
2022-12-05 12:10:53 +08:00
| <a href="#debugger_t_debugger_restart">debugger\_restart</a> | 重新运行。 |
| <a href="#debugger_t_debugger_set_break_point">debugger\_set\_break\_point</a> | 设置断点。 |
2023-06-29 10:44:29 +08:00
| <a href="#debugger_t_debugger_set_break_point_ex">debugger\_set\_break\_point\_ex</a> | 设置断点。 |
| <a href="#debugger_t_debugger_set_current_frame">debugger\_set\_current\_frame</a> | 从callstack中选择当前的frame。 |
2023-12-26 19:09:36 +08:00
| <a href="#debugger_t_debugger_set_current_thread_id">debugger\_set\_current\_thread\_id</a> | 设置当前处于哪个一个线程的上下文中。 |
2023-06-29 10:44:29 +08:00
| <a href="#debugger_t_debugger_set_state">debugger\_set\_state</a> | 设置状态。 |
2022-12-05 12:10:53 +08:00
| <a href="#debugger_t_debugger_step_in">debugger\_step\_in</a> | 进入函数。 |
2023-06-29 10:44:29 +08:00
| <a href="#debugger_t_debugger_step_loop_over">debugger\_step\_loop\_over</a> | 执行下一条语句(跳过循环) |
2022-12-05 12:10:53 +08:00
| <a href="#debugger_t_debugger_step_out">debugger\_step\_out</a> | 执行到函数结束。 |
2023-06-29 10:44:29 +08:00
| <a href="#debugger_t_debugger_step_over">debugger\_step\_over</a> | 执行到下一行代码。(不进入函数) |
| <a href="#debugger_t_debugger_stop">debugger\_stop</a> | 终止程序运行。 |
2022-12-05 12:10:53 +08:00
| <a href="#debugger_t_debugger_unlock">debugger\_unlock</a> | 解锁debugger对象。 |
| <a href="#debugger_t_debugger_update_code">debugger\_update\_code</a> | 更新代码。 |
#### debugger\_attach 函数
-----------------------
* 函数功能:
> <p id="debugger_t_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 函数
-----------------------
* 函数功能:
> <p id="debugger_t_debugger_clear_break_points">清除全部断点。
* 函数原型:
```
ret_t debugger_clear_break_points (debugger_t* debugger);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| debugger | debugger\_t* | debugger对象。 |
#### debugger\_continue 函数
-----------------------
* 函数功能:
> <p id="debugger_t_debugger_continue">执行到下一个断点。
> 处于暂停状态才能执行本命令。
* 函数原型:
```
ret_t debugger_continue (debugger_t* debugger);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| debugger | debugger\_t* | debugger对象。 |
#### debugger\_deinit 函数
-----------------------
* 函数功能:
> <p id="debugger_t_debugger_deinit">释放资源。
* 函数原型:
```
ret_t debugger_deinit (debugger_t* debugger);
```
* 参数说明:
2023-06-29 10:44:29 +08:00
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| debugger | debugger\_t* | debugger对象。 |
#### debugger\_dispatch\_messages 函数
-----------------------
* 函数功能:
> <p id="debugger_t_debugger_dispatch_messages">dispatch_messages(仅适用于客户端)
* 函数原型:
```
2023-12-26 19:09:36 +08:00
ret_t debugger_dispatch_messages (debugger_t* debugger, uint32_t timeout, uint32_t* ret_num);
2023-06-29 10:44:29 +08:00
```
* 参数说明:
2022-12-05 12:10:53 +08:00
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| debugger | debugger\_t* | debugger对象。 |
2023-12-26 19:09:36 +08:00
| timeout | uint32\_t | 超时时间。 |
| ret\_num | uint32\_t* | 返回处理命令个数。 |
2022-12-05 12:10:53 +08:00
#### debugger\_get\_break\_points 函数
-----------------------
* 函数功能:
> <p id="debugger_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 函数
-----------------------
* 函数功能:
2023-12-26 19:09:36 +08:00
> <p id="debugger_t_debugger_get_callstack">获取当前线程的callstack。
2022-12-05 12:10:53 +08:00
* 函数原型:
```
2023-12-26 19:09:36 +08:00
tk_object_t* debugger_get_callstack (debugger_t* debugger);
2022-12-05 12:10:53 +08:00
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
2023-12-26 19:09:36 +08:00
| 返回值 | tk\_object\_t* | 返回堆栈信息。 |
2022-12-05 12:10:53 +08:00
| debugger | debugger\_t* | debugger对象。 |
#### debugger\_get\_code 函数
-----------------------
* 函数功能:
> <p id="debugger_t_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* | 代码。 |
2023-12-26 19:09:36 +08:00
#### debugger\_get\_current\_frame 函数
-----------------------
* 函数功能:
> <p id="debugger_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 函数
-----------------------
* 函数功能:
> <p id="debugger_t_debugger_get_current_thread_id">获取当前线程 ID。
> 处于暂停状态才能执行本命令。
* 函数原型:
```
uint64_t debugger_get_current_thread_id (debugger_t* debugger);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | uint64\_t | 成功返回线程 ID失败返回 0。 |
| debugger | debugger\_t* | debugger对象。 |
2022-12-05 12:10:53 +08:00
#### debugger\_get\_debuggers 函数
-----------------------
* 函数功能:
> <p id="debugger_t_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 函数
-----------------------
* 函数功能:
> <p id="debugger_t_debugger_get_global">获取全局对象。
> 处于暂停状态才能执行本命令。
2023-06-29 10:44:29 +08:00
返回数据结构请参考https://microsoft.github.io/debug-adapter-protocol/specification#Requests_Variables
2022-12-05 12:10:53 +08:00
* 函数原型:
```
tk_object_t* debugger_get_global (debugger_t* debugger);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | tk\_object\_t* | 返回全局对象。 |
| debugger | debugger\_t* | debugger对象。 |
#### debugger\_get\_local 函数
-----------------------
* 函数功能:
> <p id="debugger_t_debugger_get_local">获取局部变量对象。
2023-06-29 10:44:29 +08:00
返回数据结构请参考https://microsoft.github.io/debug-adapter-protocol/specification#Requests_Variables
2022-12-05 12:10:53 +08:00
> 处于暂停状态才能执行本命令。
* 函数原型:
```
tk_object_t* debugger_get_local (debugger_t* debugger, uint32_t frame_index);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | tk\_object\_t* | 返回局部变量对象。 |
| debugger | debugger\_t* | debugger对象。 |
2023-06-29 10:44:29 +08:00
| frame\_index | uint32\_t | frame序数(0开始)。 |
2022-12-05 12:10:53 +08:00
#### debugger\_get\_self 函数
-----------------------
* 函数功能:
> <p id="debugger_t_debugger_get_self">获取self对象。
2023-06-29 10:44:29 +08:00
返回数据结构请参考https://microsoft.github.io/debug-adapter-protocol/specification#Requests_Variables
2022-12-05 12:10:53 +08:00
> 处于暂停状态才能执行本命令。
* 函数原型:
```
tk_object_t* debugger_get_self (debugger_t* debugger);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | tk\_object\_t* | 返回self对象。 |
| debugger | debugger\_t* | debugger对象。 |
2023-06-29 10:44:29 +08:00
#### debugger\_get\_state 函数
-----------------------
* 函数功能:
> <p id="debugger_t_debugger_get_state">获取调试状态。
* 函数原型:
```
debugger_program_state_t debugger_get_state (debugger_t* debugger);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | debugger\_program\_state\_t | 返回调试状态。 |
| debugger | debugger\_t* | debugger对象。 |
#### debugger\_get\_threads 函数
-----------------------
* 函数功能:
> <p id="debugger_t_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 函数
-----------------------
* 函数功能:
> <p id="debugger_t_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时返回全部变量。 |
2022-12-05 12:10:53 +08:00
#### debugger\_is\_paused 函数
-----------------------
* 函数功能:
2023-06-29 10:44:29 +08:00
> <p id="debugger_t_debugger_is_paused">查看当前是否处于暂停状态。
2022-12-05 12:10:53 +08:00
* 函数原型:
```
bool_t debugger_is_paused (debugger_t* debugger);
```
* 参数说明:
2023-06-29 10:44:29 +08:00
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | bool\_t | 返回TRUE表示处于暂停运行状态。 |
| debugger | debugger\_t* | debugger对象。 |
#### debugger\_is\_paused\_or\_running 函数
-----------------------
* 函数功能:
> <p id="debugger_t_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 函数
-----------------------
* 函数功能:
> <p id="debugger_t_debugger_is_running">查看当前是否处于运行状态。
* 函数原型:
```
bool_t debugger_is_running (debugger_t* debugger);
```
* 参数说明:
2022-12-05 12:10:53 +08:00
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | bool\_t | 返回TRUE表示处于暂停运行状态。 |
| debugger | debugger\_t* | debugger对象。 |
#### debugger\_launch 函数
-----------------------
* 函数功能:
> <p id="debugger_t_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* | 代码。 |
2023-12-26 19:09:36 +08:00
#### debugger\_launch\_app 函数
-----------------------
* 函数功能:
> <p id="debugger_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** | 参数列表。 |
2022-12-05 12:10:53 +08:00
#### debugger\_lock 函数
-----------------------
* 函数功能:
> <p id="debugger_t_debugger_lock">锁定debugger对象。
* 函数原型:
```
ret_t debugger_lock (debugger_t* debugger);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| debugger | debugger\_t* | debugger对象。 |
#### debugger\_match 函数
-----------------------
* 函数功能:
> <p id="debugger_t_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。 |
2023-06-29 10:44:29 +08:00
#### debugger\_pause 函数
2022-12-05 12:10:53 +08:00
-----------------------
* 函数功能:
2023-06-29 10:44:29 +08:00
> <p id="debugger_t_debugger_pause">暂停运行。
> 暂停后才能执行next/step_xxx等函数。
2022-12-05 12:10:53 +08:00
* 函数原型:
```
2023-06-29 10:44:29 +08:00
ret_t debugger_pause (debugger_t* debugger);
2022-12-05 12:10:53 +08:00
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| debugger | debugger\_t* | debugger对象。 |
2023-06-29 10:44:29 +08:00
#### debugger\_remove\_break\_point 函数
2022-12-05 12:10:53 +08:00
-----------------------
* 函数功能:
2023-06-29 10:44:29 +08:00
> <p id="debugger_t_debugger_remove_break_point">清除断点。
2022-12-05 12:10:53 +08:00
* 函数原型:
```
2023-06-29 10:44:29 +08:00
ret_t debugger_remove_break_point (debugger_t* debugger, uint32_t line);
2022-12-05 12:10:53 +08:00
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| debugger | debugger\_t* | debugger对象。 |
2023-06-29 10:44:29 +08:00
| line | uint32\_t | 代码行号。 |
#### debugger\_remove\_break\_point\_ex 函数
2022-12-05 12:10:53 +08:00
-----------------------
* 函数功能:
2023-06-29 10:44:29 +08:00
> <p id="debugger_t_debugger_remove_break_point_ex">清除断点。
2022-12-05 12:10:53 +08:00
* 函数原型:
```
2023-06-29 10:44:29 +08:00
ret_t debugger_remove_break_point_ex (debugger_t* debugger, const char* position);
2022-12-05 12:10:53 +08:00
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| debugger | debugger\_t* | debugger对象。 |
2023-06-29 10:44:29 +08:00
| position | const char* | 位置(函数名或文件名:行号)。 |
2022-12-05 12:10:53 +08:00
#### debugger\_restart 函数
-----------------------
* 函数功能:
> <p id="debugger_t_debugger_restart">重新运行。
* 函数原型:
```
ret_t debugger_restart (debugger_t* debugger);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| debugger | debugger\_t* | debugger对象。 |
#### debugger\_set\_break\_point 函数
-----------------------
* 函数功能:
> <p id="debugger_t_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 | 代码行号。 |
2023-06-29 10:44:29 +08:00
#### debugger\_set\_break\_point\_ex 函数
-----------------------
* 函数功能:
> <p id="debugger_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 函数
-----------------------
* 函数功能:
> <p id="debugger_t_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表示当前) |
2023-12-26 19:09:36 +08:00
#### debugger\_set\_current\_thread\_id 函数
-----------------------
* 函数功能:
> <p id="debugger_t_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 |
2023-06-29 10:44:29 +08:00
#### debugger\_set\_state 函数
-----------------------
* 函数功能:
> <p id="debugger_t_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 | 状态。 |
2022-12-05 12:10:53 +08:00
#### debugger\_step\_in 函数
-----------------------
* 函数功能:
> <p id="debugger_t_debugger_step_in">进入函数。
> 处于暂停状态才能执行本命令。
* 函数原型:
```
ret_t debugger_step_in (debugger_t* debugger);
```
* 参数说明:
2023-06-29 10:44:29 +08:00
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| debugger | debugger\_t* | debugger对象。 |
#### debugger\_step\_loop\_over 函数
-----------------------
* 函数功能:
> <p id="debugger_t_debugger_step_loop_over">执行下一条语句(跳过循环)
> 处于暂停状态才能执行本命令。
* 函数原型:
```
ret_t debugger_step_loop_over (debugger_t* debugger);
```
* 参数说明:
2022-12-05 12:10:53 +08:00
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| debugger | debugger\_t* | debugger对象。 |
#### debugger\_step\_out 函数
-----------------------
* 函数功能:
> <p id="debugger_t_debugger_step_out">执行到函数结束。
> 处于暂停状态才能执行本命令。
* 函数原型:
```
ret_t debugger_step_out (debugger_t* debugger);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| debugger | debugger\_t* | debugger对象。 |
#### debugger\_step\_over 函数
-----------------------
* 函数功能:
2023-06-29 10:44:29 +08:00
> <p id="debugger_t_debugger_step_over">执行到下一行代码。(不进入函数)
2022-12-05 12:10:53 +08:00
> 处于暂停状态才能执行本命令。
* 函数原型:
```
ret_t debugger_step_over (debugger_t* debugger);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| debugger | debugger\_t* | debugger对象。 |
#### debugger\_stop 函数
-----------------------
* 函数功能:
2023-06-29 10:44:29 +08:00
> <p id="debugger_t_debugger_stop">终止程序运行。
2022-12-05 12:10:53 +08:00
* 函数原型:
```
ret_t debugger_stop (debugger_t* debugger);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| debugger | debugger\_t* | debugger对象。 |
#### debugger\_unlock 函数
-----------------------
* 函数功能:
> <p id="debugger_t_debugger_unlock">解锁debugger对象。
* 函数原型:
```
ret_t debugger_unlock (debugger_t* debugger);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| debugger | debugger\_t* | debugger对象。 |
#### debugger\_update\_code 函数
-----------------------
* 函数功能:
> <p id="debugger_t_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* | 代码。 |