reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

Declarations

tools/lldb/tools/lldb-vscode/VSCode.h
  137 extern VSCode g_vsc;

References

tools/lldb/tools/lldb-vscode/ExceptionBreakpoint.cpp
   19   bp = g_vsc.target.BreakpointCreateForException(language, catch_value,
   26   g_vsc.target.BreakpointDelete(bp.GetID());
tools/lldb/tools/lldb-vscode/FunctionBreakpoint.cpp
   20   bp = g_vsc.target.BreakpointCreateByName(functionName.c_str());
tools/lldb/tools/lldb-vscode/JSONUtils.cpp
  488     low_pc = function.GetStartAddress().GetLoadAddress(g_vsc.target);
  489     auto addr_srcref = g_vsc.addr_to_source_ref.find(low_pc);
  490     if (addr_srcref != g_vsc.addr_to_source_ref.end()) {
  494       disasm_line = g_vsc.GetLineForPC(addr_srcref->second, pc);
  496       insts = function.GetInstructions(g_vsc.target);
  501       low_pc = symbol.GetStartAddress().GetLoadAddress(g_vsc.target);
  502       auto addr_srcref = g_vsc.addr_to_source_ref.find(low_pc);
  503       if (addr_srcref != g_vsc.addr_to_source_ref.end()) {
  507         disasm_line = g_vsc.GetLineForPC(addr_srcref->second, pc);
  509         insts = symbol.GetInstructions(g_vsc.target);
  521       const auto inst_addr = inst.GetAddress().GetLoadAddress(g_vsc.target);
  522       const char *m = inst.GetMnemonic(g_vsc.target);
  523       const char *o = inst.GetOperands(g_vsc.target);
  524       const char *c = inst.GetComment(g_vsc.target);
  555     g_vsc.source_map[sourceReference] = std::move(source);
  556     g_vsc.addr_to_source_ref[low_pc] = sourceReference;
  738     ExceptionBreakpoint *exc_bp = g_vsc.GetExceptionBPFromStopReason(thread);
  777   if (tid == g_vsc.focus_tid) {
  780   body.try_emplace("preserveFocusHint", tid != g_vsc.focus_tid);
tools/lldb/tools/lldb-vscode/LLDBUtils.cpp
   19   lldb::SBCommandInterpreter interp = g_vsc.debugger.GetCommandInterpreter();
tools/lldb/tools/lldb-vscode/SourceBreakpoint.cpp
   19   bp = g_vsc.target.BreakpointCreateByLocation(source_path.str().c_str(), line);
tools/lldb/tools/lldb-vscode/lldb-vscode.cpp
   80     if (g_vsc.log)
   81       *g_vsc.log << "error: opening socket (" << strerror(errno) << ")"
   90       if (g_vsc.log)
   91         *g_vsc.log << "error: binding socket (" << strerror(errno) << ")"
  100         if (g_vsc.log)
  101           *g_vsc.log << "error: accept (" << strerror(errno) << ")"
  131   g_vsc.SendJSON(llvm::json::Value(std::move(event)));
  140   g_vsc.SendJSON(llvm::json::Value(std::move(event)));
  146   if (!g_vsc.sent_terminated_event) {
  147     g_vsc.sent_terminated_event = true;
  150     g_vsc.SendJSON(llvm::json::Value(std::move(event)));
  157   lldb::SBProcess process = g_vsc.target.GetProcess();
  162       old_thread_ids.swap(g_vsc.thread_ids);
  177         if (tid == g_vsc.focus_tid && !has_reason)
  178           g_vsc.focus_tid = LLDB_INVALID_THREAD_ID;
  189       if (g_vsc.focus_tid == LLDB_INVALID_THREAD_ID)
  190         g_vsc.focus_tid = first_tid_with_reason;
  196         g_vsc.SendJSON(CreateThreadStopped(thread, stop_id));
  200           g_vsc.thread_ids.insert(thread.GetThreadID());
  202             g_vsc.SendJSON(CreateThreadStopped(thread, stop_id));
  208         auto end = g_vsc.thread_ids.end();
  209         auto pos = g_vsc.thread_ids.find(tid);
  214       if (g_vsc.log)
  215         *g_vsc.log << "error: SendThreadStoppedEvent() when process"
  221     if (g_vsc.log)
  222       *g_vsc.log << "error: SendThreadStoppedEvent() invalid process"
  225   g_vsc.RunStopCommands();
  283   lldb::SBFileSpec exe_fspec = g_vsc.target.GetExecutable();
  289   const auto pid = g_vsc.target.GetProcess().GetProcessID();
  306   g_vsc.SendJSON(llvm::json::Value(std::move(event)));
  315   g_vsc.SendOutput(OutputType::Stdout, llvm::StringRef(buffer, count));
  317     g_vsc.SendOutput(OutputType::Stderr, llvm::StringRef(buffer, count));
  327   lldb::SBListener listener = g_vsc.debugger.GetListener();
  368             g_vsc.RunExitCommands();
  401               g_vsc.SendJSON(llvm::json::Value(std::move(bp_event)));
  405       } else if (event.BroadcasterMatchesRef(g_vsc.broadcaster)) {
  434         g_vsc.SendOutput(OutputType::Console, llvm::StringRef(sourceMapHelp));
  443       g_vsc.SendOutput(OutputType::Console, llvm::StringRef(sourceMapHelp));
  453     g_vsc.RunLLDBCommands("Setting source map:", {sourceMapCommand});
  493     g_vsc.attach_info.SetProcessID(pid);
  495   g_vsc.attach_info.SetWaitForLaunch(wait_for, false /*async*/);
  496   g_vsc.init_commands = GetStrings(arguments, "initCommands");
  497   g_vsc.pre_run_commands = GetStrings(arguments, "preRunCommands");
  498   g_vsc.stop_commands = GetStrings(arguments, "stopCommands");
  499   g_vsc.exit_commands = GetStrings(arguments, "exitCommands");
  501   g_vsc.stop_at_entry = GetBoolean(arguments, "stopOnEntry", false);
  513   g_vsc.RunInitCommands();
  521     g_vsc.launch_info.SetExecutableFile(program_fspec,
  527     g_vsc.target.AddModule(program.data(), target_triple, uuid_cstr, symfile);
  531       g_vsc.SendJSON(llvm::json::Value(std::move(response)));
  537   g_vsc.launch_info.SetDetachOnError(detatchOnError);
  540   g_vsc.RunPreRunCommands();
  547     g_vsc.SendOutput(OutputType::Console, llvm::StringRef(attach_info,
  554     g_vsc.debugger.SetAsync(false);
  555     g_vsc.target.Attach(g_vsc.attach_info, error);
  555     g_vsc.target.Attach(g_vsc.attach_info, error);
  557     g_vsc.debugger.SetAsync(true);
  562     g_vsc.RunLLDBCommands("Running attachCommands:", attachCommands);
  565     g_vsc.target = g_vsc.debugger.GetSelectedTarget();
  565     g_vsc.target = g_vsc.debugger.GetSelectedTarget();
  571     auto attached_pid = g_vsc.target.GetProcess().GetProcessID();
  584   g_vsc.SendJSON(llvm::json::Value(std::move(response)));
  587     g_vsc.SendJSON(CreateEventObject("initialized"));
  649   lldb::SBProcess process = g_vsc.target.GetProcess();
  653   g_vsc.focus_tid = GetUnsigned(arguments, "threadId", LLDB_INVALID_THREAD_ID);
  658   g_vsc.SendJSON(llvm::json::Value(std::move(response)));
  695   g_vsc.SendJSON(llvm::json::Value(std::move(response)));
  696   if (g_vsc.stop_at_entry)
  699     g_vsc.target.GetProcess().Continue();
  752   lldb::SBProcess process = g_vsc.target.GetProcess();
  769     g_vsc.debugger.SetAsync(false);
  774     g_vsc.debugger.SetAsync(true);
  777   g_vsc.SendJSON(llvm::json::Value(std::move(response)));
  779   if (g_vsc.event_thread.joinable()) {
  780     g_vsc.broadcaster.BroadcastEventByType(eBroadcastBitStopEventThread);
  781     g_vsc.event_thread.join();
  790   lldb::SBThread thread = g_vsc.GetLLDBThread(*arguments);
  796       ExceptionBreakpoint *exc_bp = g_vsc.GetExceptionBPFromStopReason(thread);
  821   g_vsc.SendJSON(llvm::json::Value(std::move(response)));
  930   lldb::SBFrame frame = g_vsc.GetLLDBFrame(*arguments);
  962         auto variablesReference = VARIDX_TO_VARREF(g_vsc.variables.GetSize());
  963         g_vsc.variables.Append(value);
  971   g_vsc.SendJSON(llvm::json::Value(std::move(response)));
 1051   g_vsc.debugger = lldb::SBDebugger::Create(true /*source_init_files*/);
 1062     g_vsc.debugger.SetOutputFileHandle(out, true);
 1063     g_vsc.debugger.SetErrorFileHandle(out, false);
 1066   g_vsc.target = g_vsc.debugger.CreateTarget(nullptr);
 1066   g_vsc.target = g_vsc.debugger.CreateTarget(nullptr);
 1067   lldb::SBListener listener = g_vsc.debugger.GetListener();
 1069       g_vsc.target.GetBroadcaster(),
 1071   listener.StartListeningForEvents(g_vsc.broadcaster,
 1075   g_vsc.event_thread = std::thread(EventThreadFunction);
 1094   for (const auto &exc_bp : g_vsc.exception_breakpoints) {
 1140   g_vsc.SendJSON(llvm::json::Value(std::move(response)));
 1182   g_vsc.init_commands = GetStrings(arguments, "initCommands");
 1183   g_vsc.pre_run_commands = GetStrings(arguments, "preRunCommands");
 1184   g_vsc.stop_commands = GetStrings(arguments, "stopCommands");
 1185   g_vsc.exit_commands = GetStrings(arguments, "exitCommands");
 1187   g_vsc.stop_at_entry = GetBoolean(arguments, "stopOnEntry", false);
 1201   g_vsc.RunInitCommands();
 1207     g_vsc.launch_info.SetWorkingDirectory(cwd.data());
 1214     g_vsc.launch_info.SetExecutableFile(program_fspec,
 1220     lldb::SBModule module = g_vsc.target.AddModule(
 1228       g_vsc.SendJSON(llvm::json::Value(std::move(response)));
 1237     g_vsc.launch_info.SetArguments(MakeArgv(args).data(), true);
 1242     g_vsc.launch_info.SetEnvironmentEntries(MakeArgv(envs).data(), true);
 1244   auto flags = g_vsc.launch_info.GetLaunchFlags();
 1253   g_vsc.launch_info.SetDetachOnError(detatchOnError);
 1254   g_vsc.launch_info.SetLaunchFlags(flags | lldb::eLaunchFlagDebug |
 1258   g_vsc.RunPreRunCommands();
 1262     g_vsc.debugger.SetAsync(false);
 1263     g_vsc.target.Launch(g_vsc.launch_info, error);
 1263     g_vsc.target.Launch(g_vsc.launch_info, error);
 1264     g_vsc.debugger.SetAsync(true);
 1266     g_vsc.RunLLDBCommands("Running launchCommands:", launchCommands);
 1269     g_vsc.target = g_vsc.debugger.GetSelectedTarget();
 1269     g_vsc.target = g_vsc.debugger.GetSelectedTarget();
 1276   g_vsc.SendJSON(llvm::json::Value(std::move(response)));
 1279   g_vsc.SendJSON(llvm::json::Value(CreateEventObject("initialized")));
 1326   lldb::SBThread thread = g_vsc.GetLLDBThread(*arguments);
 1330     g_vsc.focus_tid = thread.GetThreadID();
 1335   g_vsc.SendJSON(llvm::json::Value(std::move(response)));
 1377   lldb::SBProcess process = g_vsc.target.GetProcess();
 1379   g_vsc.SendJSON(llvm::json::Value(std::move(response)));
 1438   lldb::SBFrame frame = g_vsc.GetLLDBFrame(*arguments);
 1439   g_vsc.variables.Clear();
 1440   g_vsc.variables.Append(frame.GetVariables(true,   // arguments
 1444   g_vsc.num_locals = g_vsc.variables.GetSize();
 1444   g_vsc.num_locals = g_vsc.variables.GetSize();
 1445   g_vsc.variables.Append(frame.GetVariables(false,  // arguments
 1449   g_vsc.num_globals = g_vsc.variables.GetSize() - (g_vsc.num_locals);
 1449   g_vsc.num_globals = g_vsc.variables.GetSize() - (g_vsc.num_locals);
 1449   g_vsc.num_globals = g_vsc.variables.GetSize() - (g_vsc.num_locals);
 1450   g_vsc.variables.Append(frame.GetRegisters());
 1451   g_vsc.num_regs =
 1452       g_vsc.variables.GetSize() - (g_vsc.num_locals + g_vsc.num_globals);
 1452       g_vsc.variables.GetSize() - (g_vsc.num_locals + g_vsc.num_globals);
 1452       g_vsc.variables.GetSize() - (g_vsc.num_locals + g_vsc.num_globals);
 1453   body.try_emplace("scopes", g_vsc.CreateTopLevelScopes());
 1455   g_vsc.SendJSON(llvm::json::Value(std::move(response)));
 1589   auto old_src_bp_pos = g_vsc.source_breakpoints.find(path);
 1590   if (old_src_bp_pos != g_vsc.source_breakpoints.end()) {
 1606         g_vsc.target.BreakpointDelete(pair.second.bp.GetID());
 1640     g_vsc.source_breakpoints[path] = std::move(request_bps);
 1646   g_vsc.SendJSON(llvm::json::Value(std::move(response)));
 1705   for (const auto &bp : g_vsc.exception_breakpoints)
 1710     auto exc_bp = g_vsc.GetExceptionBreakpoint(filter);
 1717     auto exc_bp = g_vsc.GetExceptionBreakpoint(filter);
 1721   g_vsc.SendJSON(llvm::json::Value(std::move(response)));
 1822   for (auto &pair: g_vsc.function_breakpoints) {
 1826       g_vsc.target.BreakpointDelete(pair.second.bp.GetID());
 1841     g_vsc.function_breakpoints.erase(name);
 1849     g_vsc.function_breakpoints[pair.first()] = std::move(pair.second);
 1855   g_vsc.SendJSON(llvm::json::Value(std::move(response)));
 1924   auto pos = g_vsc.source_map.find((lldb::addr_t)sourceReference);
 1925   if (pos != g_vsc.source_map.end()) {
 1931   g_vsc.SendJSON(llvm::json::Value(std::move(response)));
 2009   lldb::SBThread thread = g_vsc.GetLLDBThread(*arguments);
 2026   g_vsc.SendJSON(llvm::json::Value(std::move(response)));
 2078   lldb::SBThread thread = g_vsc.GetLLDBThread(*arguments);
 2082     g_vsc.focus_tid = thread.GetThreadID();
 2087   g_vsc.SendJSON(llvm::json::Value(std::move(response)));
 2130   lldb::SBThread thread = g_vsc.GetLLDBThread(*arguments);
 2134     g_vsc.focus_tid = thread.GetThreadID();
 2139   g_vsc.SendJSON(llvm::json::Value(std::move(response)));
 2179   lldb::SBProcess process = g_vsc.target.GetProcess();
 2195   g_vsc.SendJSON(llvm::json::Value(std::move(response)));
 2308     variable = g_vsc.variables.GetValueAtIndex(id_value);
 2317       end_idx = start_idx + g_vsc.num_locals;
 2320       start_idx = g_vsc.num_locals;
 2321       end_idx = start_idx + g_vsc.num_globals;
 2324       start_idx = g_vsc.num_locals + g_vsc.num_globals;
 2324       start_idx = g_vsc.num_locals + g_vsc.num_globals;
 2325       end_idx = start_idx + g_vsc.num_regs;
 2337       auto curr_variable = g_vsc.variables.GetValueAtIndex(i);
 2350     lldb::SBValue container = g_vsc.variables.GetValueAtIndex(var_idx);
 2366         newVariablesReference = VARIDX_TO_VARREF(g_vsc.variables.GetSize());
 2367         g_vsc.variables.Append(variable);
 2386   g_vsc.SendJSON(llvm::json::Value(std::move(response)));
 2484       num_children = g_vsc.num_locals;
 2487       start_idx = start + g_vsc.num_locals + start;
 2488       num_children = g_vsc.num_globals;
 2491       start_idx = start + g_vsc.num_locals + g_vsc.num_globals;
 2491       start_idx = start + g_vsc.num_locals + g_vsc.num_globals;
 2492       num_children = g_vsc.num_regs;
 2499       lldb::SBValue variable = g_vsc.variables.GetValueAtIndex(i);
 2509     lldb::SBValue variable = g_vsc.variables.GetValueAtIndex(var_idx);
 2518           const int64_t var_idx = g_vsc.variables.GetSize();
 2522           g_vsc.variables.Append(child);
 2532   g_vsc.SendJSON(llvm::json::Value(std::move(response)));
 2543   for (uint32_t i = 0; g_vsc.target.GetBreakpointAtIndex(i).IsValid(); ++i) {
 2544     auto bp = g_vsc.target.GetBreakpointAtIndex(i);
 2550   g_vsc.SendJSON(llvm::json::Value(std::move(response)));
 2607         g_vsc.input.descriptor = StreamDescriptor::from_socket(socket_fd, true);
 2608         g_vsc.output.descriptor =
 2615     g_vsc.input.descriptor = StreamDescriptor::from_file(fileno(stdin), false);
 2616     g_vsc.output.descriptor =
 2622     std::string json = g_vsc.ReadJSON();
 2630       if (g_vsc.log) {
 2636         *g_vsc.log << "error: failed to parse JSON: " << error_str << std::endl
 2644       if (g_vsc.log)
 2645         *g_vsc.log << "error: json packet isn't a object" << std::endl;
 2656         if (g_vsc.log)
 2657           *g_vsc.log << "error: unhandled command \"" << command.data() << std::endl;