5、调试器开发:用户输入处理、测试与重构

调试器开发:输入处理与重构

调试器开发:用户输入处理、测试与重构

1. 用户输入处理

在处理用户输入时,我们需要一个本地变量来存储待执行的命令,无论该命令是直接来自用户输入还是读取历史记录。下面是相关代码:

else {
    line_str = line;
    add_history(line);
    free(line);
}
if (!line_str.empty()) {
    handle_command(pid, line_str);
}

若输入行不为空,我们将其内容保存到 line_str ,添加到历史记录并释放内存,最后处理该命令。

2. 命令格式与处理

命令格式类似GDB和LLDB调试器。例如,输入 continue cont c 可继续程序;输入 break set 0xcafecafe 可在指定地址设置断点。

为支持继续程序的功能,我们在 sdb/tools/sdb.cpp 中添加如下代码:

#include <vector>
namespace {
    std::vector<std::string> split(std::string_view str, char delimiter);
    bool is_prefix(std::strin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值