You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: _gsocproposals/2025/proposal_XeusCpp-Debugging.md
+5-5Lines changed: 5 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,23 +12,23 @@ organization:
12
12
13
13
## Description
14
14
15
-
Xeus-Cpp is an interactive execution environment for C++ in Jupyter notebooks, built on top of Clang-Repl via CppInterOp. While it provides a seamless workflow for running C++ code interactively, the lack of an integrated debugging experience remains a gap, especially when dealing with dynamically compiled code through LLVM’s JIT(Just-In-Time) execution.
15
+
xeus-cpp is an interactive execution environment for C++ in Jupyter notebooks, built on the Clang-Repl C++ interpreter, provided by [CppInterOp](https://github.com/compiler-research/CppInterOp/). While xeus-cpp enables a seamless workflow for running C++ code interactively, the lack of an integrated debugging experience remains a gap, especially when dealing with code that is dynamically compiled and executed through LLVM’s JIT(Just-In-Time) infrastructure.
16
16
17
17
Jupyter’s debugging system follows the Debug Adapter Protocol (DAP), enabling seamless integration of debuggers into interactive kernels. Existing Jupyter kernels, such as the IPython & the xeus-python kernel, have successfully implemented debugging workflows that support breakpoints, variable inspection, and execution control, even in dynamically executed environments. These implementations address challenges such as symbol resolution and source mapping for dynamically generated code, ensuring that debugging within Jupyter remains intuitive and user-friendly.
18
18
19
-
However, debugging C++ inside an interactive environment presents unique challenges, particularly due to Clang-Repl’s use of LLVM’s ORC JIT to compile and execute code dynamically. To integrate debugging into Xeus-Cpp, the project will explore existing solutions for DAP implementations like `lldb_dap` and debuggers like lldb that can interface with Jupyter while effectively supporting the execution model of Clang-Repl.
19
+
However, debugging C++ inside an interactive environment presents unique challenges, particularly due to Clang-Repl’s use of LLVM’s ORC JIT to compile and execute code dynamically. To integrate debugging into xeus-cpp, the project will explore existing solutions for DAP implementations like `lldb_dap` and debuggers like lldb that can interface with Jupyter while effectively supporting the execution model of Clang-Repl.
20
20
21
21
## Project Milestones
22
22
23
-
* Seamless debugging integration in Xeus-Cpp establishing reliable interactions between Xeus-CPP, a Debug Adapter Protocol (DAP) implementation, and a debugger.
24
-
* Implement a testing framework through xeus-zmq to thoutest the debugger thoroughly testing everything that is supposed to work. Already done for xeus-python and we can take inspiration from there.
23
+
* Seamless debugging integration, establishing reliable interactions between xeus-cpp, a Debug Adapter Protocol (DAP) implementation, and a debugger.
24
+
* Implement a testing framework through `xeus-zmq` to thoroughly test the debugger. This can be inspired by an existing implementation in `xeus-python`.
25
25
* Present the work at the relevant meetings and conferences.
26
26
27
27
28
28
## Requirements
29
29
30
30
* C/C++
31
-
* Basic understanding of Debug Adapter Protocol
31
+
* Basic understanding of the Debug Adapter Protocol
32
32
* Basic understanding of the stack used by xeus-cpp: xeus, cppinterop, clang-repl
33
33
* Research on different DAP implementations like lldb_dap and debuggers like lldb/gdb that can be utilized for the project.
0 commit comments