sEMU
载入中...
搜索中...
未找到
SDB类 参考

软件调试器 (Software Debugger) 接口,提供类似 GDB 的交互式运行监控功能。 更多...

#include <sdb.hpp>

SDB 的协作图:
Collaboration graph

Public 成员函数

 SDB (Core *core, guest_mem *mem, ElfLoader *loader=nullptr)
 初始化调试器系统
 ~SDB ()
 销毁调试器实例并释放相关资源
void sdb_mainloop ()
 启动 REPL (读取-求值-打印循环) 交互式主循环,捕获指令并执行调试命令

Private 成员函数

void cmd_c (const std::vector< std::string > &args)
 继续执行命令 (continue)
void cmd_q (const std::vector< std::string > &args)
 退出仿真器命令 (quit)
void cmd_si (const std::vector< std::string > &args)
 单步执行命令 (step instruction)
void cmd_info (const std::vector< std::string > &args)
 打印程序状态信息命令 (info)
void cmd_x (const std::vector< std::string > &args)
 扫描内存命令 (examine)
void cmd_trace_func (const std::vector< std::string > &args)
 跟踪函数调用命令 (尚未实现)
void cmd_help (const std::vector< std::string > &args)
 打印帮助信息命令 (help)
uint64_t exec_si_bare (uint64_t steps)
 裸机单步执行模式
uint64_t exec_si_trace (uint64_t steps)
 追踪单步执行模式 (带访存与寄存器打印)
uint64_t exec_si_diff (uint64_t steps)
 差分测试单步执行模式 (与参考模拟器进行状态比对)

Private 属性

Corecore
guest_memmem
ElfLoaderelf_loader

详细描述

软件调试器 (Software Debugger) 接口,提供类似 GDB 的交互式运行监控功能。

支持通过 EBREAK 动态触发断点、原生执行日志记录、追踪执行边界 (Trace)、 以及检查原生寄存器变量和内存状态。

构造及析构函数说明

◆ SDB()

SDB::SDB ( Core * core,
guest_mem * mem,
ElfLoader * loader = nullptr )

初始化调试器系统

参数
core指向原生 Verilated 模型核心实例的指针,用于控制和检查处理器状态
mem指向客户机内存的指针,用于检查物理内存
loader(可选) 指向 ELF 加载器的指针,用于符号解析(如函数地址查找)

◆ ~SDB()

SDB::~SDB ( )

销毁调试器实例并释放相关资源

成员函数说明

◆ cmd_c()

void SDB::cmd_c ( const std::vector< std::string > & args)
private

继续执行命令 (continue)

函数调用图:
这是这个函数的调用关系图:

◆ cmd_help()

void SDB::cmd_help ( const std::vector< std::string > & args)
private

打印帮助信息命令 (help)

这是这个函数的调用关系图:

◆ cmd_info()

void SDB::cmd_info ( const std::vector< std::string > & args)
private

打印程序状态信息命令 (info)

这是这个函数的调用关系图:

◆ cmd_q()

void SDB::cmd_q ( const std::vector< std::string > & args)
private

退出仿真器命令 (quit)

这是这个函数的调用关系图:

◆ cmd_si()

void SDB::cmd_si ( const std::vector< std::string > & args)
private

单步执行命令 (step instruction)

函数调用图:
这是这个函数的调用关系图:

◆ cmd_trace_func()

void SDB::cmd_trace_func ( const std::vector< std::string > & args)
private

跟踪函数调用命令 (尚未实现)

函数调用图:
这是这个函数的调用关系图:

◆ cmd_x()

void SDB::cmd_x ( const std::vector< std::string > & args)
private

扫描内存命令 (examine)

这是这个函数的调用关系图:

◆ exec_si_bare()

uint64_t SDB::exec_si_bare ( uint64_t steps)
private

裸机单步执行模式

参数
steps要执行的步数
返回
实际成功执行的指令数
函数调用图:
这是这个函数的调用关系图:

◆ exec_si_diff()

uint64_t SDB::exec_si_diff ( uint64_t steps)
private

差分测试单步执行模式 (与参考模拟器进行状态比对)

参数
steps要执行的步数
返回
实际成功执行的指令数
函数调用图:
这是这个函数的调用关系图:

◆ exec_si_trace()

uint64_t SDB::exec_si_trace ( uint64_t steps)
private

追踪单步执行模式 (带访存与寄存器打印)

参数
steps要执行的步数
返回
实际成功执行的指令数
函数调用图:
这是这个函数的调用关系图:

◆ sdb_mainloop()

void SDB::sdb_mainloop ( )

启动 REPL (读取-求值-打印循环) 交互式主循环,捕获指令并执行调试命令

函数调用图:
这是这个函数的调用关系图:

类成员变量说明

◆ core

Core* SDB::core
private

◆ elf_loader

ElfLoader* SDB::elf_loader
private

◆ mem

guest_mem* SDB::mem
private

该类的文档由以下文件生成: