#include #include "lldb/API/LLDB.h" #include "lldb/API/SBDebugger.h" #include "lldb/API/SBTarget.h" using namespace lldb; int main (int argc, char **argv) { // We are expecting the program path and a path to an executable to load if (argc != 2) return 1; const char *program_file = argv[1]; SBDebugger::Initialize(); SBDebugger debugger = SBDebugger::Create(false); auto lambda = [&](){ SBError error; SBTarget target = debugger.CreateTarget(program_file, nullptr, nullptr, false, error); }; // Create 3 targets at the same time and make sure we don't crash. std::thread thread1(lambda); std::thread thread2(lambda); std::thread thread3(lambda); thread1.join(); thread2.join(); thread3.join(); SBDebugger::Terminate(); return 0; }