#ifndef JUCI_DEBUG_H_ #define JUCI_DEBUG_H_ #include #include #include #include #include #include #include class Debug { private: Debug(); public: static Debug &get() { static Debug singleton; return singleton; } void start(std::shared_ptr > > breakpoints, const boost::filesystem::path &executable, const boost::filesystem::path &path="", std::function callback=nullptr, std::function status_callback=nullptr, std::function stop_callback=nullptr); void continue_debug(); //can't use continue as function name void stop(); void kill(); std::pair run_command(const std::string &command); void delete_debug(); //can't use delete as function name std::string get_value(const std::string &variable, const boost::filesystem::path &file_path, unsigned int line_nr); private: lldb::SBDebugger debugger; lldb::SBListener listener; std::unique_ptr process; std::thread debug_thread; lldb::StateType state; std::mutex event_mutex; size_t buffer_size; }; #endif