diff --git a/include/xeus-python/xdebugger.hpp b/include/xeus-python/xdebugger.hpp index ac842f56..6a7e2056 100644 --- a/include/xeus-python/xdebugger.hpp +++ b/include/xeus-python/xdebugger.hpp @@ -17,12 +17,14 @@ #endif #include +#include #include #include #include "nlohmann/json.hpp" #include "pybind11/pybind11.h" #include "xeus-zmq/xdebugger_base.hpp" +#include "xeus-zmq/xthread.hpp" #include "xeus_python_config.hpp" namespace py = pybind11; @@ -62,11 +64,12 @@ namespace xpyt xeus::xdebugger_info get_debugger_info() const override; std::string get_cell_temporary_file(const std::string& code) const override; - xdebugpy_client* p_debugpy_client; + std::unique_ptr p_debugpy_client; std::string m_debugpy_host; std::string m_debugpy_port; nl::json m_debugger_config; py::object m_pydebugger; + xeus::xthread m_client_runner; bool m_copy_to_globals_available; }; diff --git a/src/xdebugger.cpp b/src/xdebugger.cpp index 18bd9f81..95c98e5e 100644 --- a/src/xdebugger.cpp +++ b/src/xdebugger.cpp @@ -70,8 +70,6 @@ namespace xpyt debugger::~debugger() { - delete p_debugpy_client; - p_debugpy_client = nullptr; } nl::json debugger::inspect_variables_request(const nl::json& message) @@ -325,13 +323,12 @@ namespace xpyt bind_sockets(controller_header_end_point, controller_end_point); std::string debugpy_end_point = "tcp://" + m_debugpy_host + ':' + m_debugpy_port; - std::thread client(&xdap_tcp_client::start_debugger, - p_debugpy_client, + m_client_runner = xeus::xthread(&xdap_tcp_client::start_debugger, + p_debugpy_client.get(), debugpy_end_point, publisher_end_point, controller_end_point, controller_header_end_point); - client.detach(); send_recv_request("REQ");