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
I have been doing quite some back and forth with @kr-2003 for discussing some design details for the debugger. We think we've made quite some progress and would like to point out possible pain-points that came out of our discussion.
What has been achieved
We have already set up debugging in VSCode using LLDB-DAP. The following video demo showcases how JIT-compiled code can be debugged using LLDB, LLDB-DAP, and VSCode. For our project, we need to integrate LLDB-DAP with Jupyter Notebook.
debugg.1.mp4
Steps to replicate the above
PRE-REQUISITES : Install lldb and lldb-dap executable in your toolchain (should be pre-installed in macos). You can also install the lldb-dap extension for vs-code.
Create a program and name it as test.cxx for starters
// jitcode_with_cppinterop.cpp
#include "clang/Interpreter/CppInterOp.h"
#include <iostream>
void run_code(std::string code) {
Cpp::Declare(code.c_str());
}
int main(int argc, char *argv[]) {
Cpp::CreateInterpreter({"-g", "-O0"});
std::vector<Cpp::TCppScope_t> Decls;
std::string code = R"(
#include <iostream>
void f2() {
int a = 4;
int b = 10;
std::cout << b - a << std::endl;
std::cout << "kr-2003" << std::endl;
}
void f3() {
int a = 1;
int b = 10;
std::cout << b - a << std::endl;
std::cout << "in f3 function" << std::endl;
}
f2();
f3();
int a = 100;
int b = 1000;
)";
std::cout << code << std::endl;
return 0;
}
Compile the above into an executable. We shall be attaching the debugger on this test executable
$LLVM_DIR/build/bin/clang++ -I$CPPINTEROP_DIR/include -g -O0 -lclangCppInterOp -Wl,-rpath,$CPPINTEROP_DIR/build/lib -L$CPPINTEROP_DIR/build/lib test.cxx -o test
Create a launch.json to launch the debugger through VS-code
{
"version": "0.2.0",
"configurations": [
{
"type": "lldb-dap",
"request": "launch",
"name": "Debug",
"program": "/Users/abhinavkumar/Desktop/Coding/Testing/test", // change according to your test executable
"sourcePath" : ["${workspaceFolder}"],
"cwd": "${workspaceFolder}",
"initCommands": [
"settings set plugin.jit-loader.gdb.enable on", // This is crucial
]
},
]
}
By default, the VS Code extension will expect to find lldb-dap in your PATH. Alternatively, you can explictly specify the location of the lldb-dap binary using the lldb-dap.executable-path setting.
Create a input_line_1 file which acts as a source that the debugger uses for mapping addresses.
#include <iostream>
void f2() {
int a = 4;
int b = 10;
std::cout << b - a << std::endl;
std::cout << "kr-2003" << std::endl;
}
void f3() {
int a = 1;
int b = 10;
std::cout << b - a << std::endl;
std::cout << "in f3 function" << std::endl;
}
f2(); // applying breakpoiutn here
f3();
int a = 100;
int b = 1000;
Try running the debugger through vs-code. You should be able to achieve the above demo shown where we are able to set breakpoints, continue and step in for a single cell of JIT compiled code.
Hey All,
I have been doing quite some back and forth with @kr-2003 for discussing some design details for the debugger. We think we've made quite some progress and would like to point out possible pain-points that came out of our discussion.
What has been achieved
We have already set up debugging in VSCode using LLDB-DAP. The following video demo showcases how JIT-compiled code can be debugged using LLDB, LLDB-DAP, and VSCode. For our project, we need to integrate LLDB-DAP with Jupyter Notebook.
debugg.1.mp4
Steps to replicate the above
PRE-REQUISITES : Install lldb and lldb-dap executable in your toolchain (should be pre-installed in macos). You can also install the lldb-dap extension for vs-code.
test.cxxfor startersBy default, the VS Code extension will expect to find lldb-dap in your PATH. Alternatively, you can explictly specify the location of the lldb-dap binary using the lldb-dap.executable-path setting.
input_line_1file which acts as a source that the debugger uses for mapping addresses.