WIP
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
#include <string>
|
||||
#include <thread>
|
||||
#include <mutex>
|
||||
#include <utility>
|
||||
|
||||
#include "util/dag.h"
|
||||
|
||||
@@ -47,6 +48,23 @@ namespace dbgui::backend
|
||||
lldb::break_id_t lldb_id;
|
||||
};
|
||||
|
||||
struct CachedDataRes
|
||||
{
|
||||
struct DisasmInfo
|
||||
{
|
||||
uint64_t range_start, range_end;
|
||||
std::vector<uint8_t> bytes;
|
||||
};
|
||||
|
||||
data::result::Node node;
|
||||
bool child_node;
|
||||
uint16_t parent_node;
|
||||
uint16_t parent_member_id;
|
||||
|
||||
size_t src_id; // invalid = size_t::MAX
|
||||
// std::variant<std::monostate, DisasmInfo> extra_info;
|
||||
};
|
||||
|
||||
// TODO: source_init_file: false
|
||||
LLDBBackend(std::string filename);
|
||||
virtual ~LLDBBackend();
|
||||
@@ -60,7 +78,7 @@ namespace dbgui::backend
|
||||
void cont() override;
|
||||
void pause() override;
|
||||
|
||||
void add_data_node(const data::DataNode &) override;
|
||||
void add_data_node(const data::source::Node &) override;
|
||||
void remove_data_node(uint64_t id) override;
|
||||
|
||||
void add_breakpoint(uint64_t addr, size_t id) override;
|
||||
@@ -79,11 +97,14 @@ namespace dbgui::backend
|
||||
void prepare_proc_info(BackToFront::InitialProcessInfo &,
|
||||
std::vector<BackToFront::RegsChanged> &);
|
||||
void dump_threads();
|
||||
void dump_variables();
|
||||
void check_reg_changes();
|
||||
void check_thread_changes();
|
||||
void check_frame_changes();
|
||||
void check_data_changes();
|
||||
data::DataResult calc_data_res(const data::DataNode &);
|
||||
std::optional<std::pair<uint16_t, size_t>>
|
||||
calc_data_res(const data::source::Node &,
|
||||
std::vector<data::result::Node> &data_res);
|
||||
|
||||
std::string _filename;
|
||||
lldb::SBDebugger _instance;
|
||||
@@ -102,11 +123,16 @@ namespace dbgui::backend
|
||||
uint16_t _selected_frame = 0;
|
||||
uint16_t _selected_thread = 0;
|
||||
|
||||
util::DAG _data_dag = {};
|
||||
std::vector<data::DataNode> _data_nodes = {};
|
||||
std::vector<size_t> _dag_linear = {};
|
||||
bool _dag_linear_valid = false;
|
||||
std::vector<data::DataResult> _cached_data_results = {};
|
||||
util::DAG _data_dag = {};
|
||||
std::vector<data::source::Node> _data_nodes = {};
|
||||
std::vector<size_t> _dag_linear = {};
|
||||
bool _dag_linear_valid = false;
|
||||
// util::DAG _data_res_dag = {};
|
||||
std::vector<std::optional<CachedDataRes>> _data_res = {};
|
||||
std::vector<std::pair<lldb::SBValue, bool>> _locals = {};
|
||||
std::optional<lldb::SBFrame> _last_frame = {};
|
||||
// std::unordered_map<size_t, uint16_t> _src_id_to_data_idx = {};
|
||||
// std::vector<data::DataResult> _cached_data_results = {};
|
||||
|
||||
std::vector<Breakpoint> _breakpoints = {};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user