Author: Walter Erquinigo Date: 2024-01-19T18:55:40-05:00 New Revision: 8bef2f27a0f7df05c7879186cc50fc8ec4a81132
URL: https://github.com/llvm/llvm-project/commit/8bef2f27a0f7df05c7879186cc50fc8ec4a81132 DIFF: https://github.com/llvm/llvm-project/commit/8bef2f27a0f7df05c7879186cc50fc8ec4a81132.diff LOG: [lldb-dap] Add a CMake variable for defining a welcome message (#78811) lldb-dap instances managed by other extensions benefit from having a welcome message with, for example, a basic user guide or a troubleshooting message. This PR adds a cmake variable for defining such message in a simple way. This message appears upon initialization but before initCommands are executed, as they might cause a failure and prevent the message from being displayed. Added: Modified: lldb/tools/lldb-dap/CMakeLists.txt lldb/tools/lldb-dap/lldb-dap.cpp Removed: ################################################################################ diff --git a/lldb/tools/lldb-dap/CMakeLists.txt b/lldb/tools/lldb-dap/CMakeLists.txt index c71c80981890bd..554567eb3b0e23 100644 --- a/lldb/tools/lldb-dap/CMakeLists.txt +++ b/lldb/tools/lldb-dap/CMakeLists.txt @@ -46,6 +46,12 @@ add_lldb_tool(lldb-dap Support ) +if(LLDB_DAP_WELCOME_MESSAGE) + target_compile_definitions(lldb-dap + PRIVATE + -DLLDB_DAP_WELCOME_MESSAGE=\"${LLDB_DAP_WELCOME_MESSAGE}\") +endif() + if(LLDB_BUILD_FRAMEWORK) # In the build-tree, we know the exact path to the framework directory. # The installed framework can be in diff erent locations. diff --git a/lldb/tools/lldb-dap/lldb-dap.cpp b/lldb/tools/lldb-dap/lldb-dap.cpp index bb3500c21e7452..828cc67c42ddde 100644 --- a/lldb/tools/lldb-dap/lldb-dap.cpp +++ b/lldb/tools/lldb-dap/lldb-dap.cpp @@ -108,6 +108,14 @@ typedef void (*RequestCallback)(const llvm::json::Object &command); enum LaunchMethod { Launch, Attach, AttachForSuspendedLaunch }; +/// Prints a welcome message on the editor if the preprocessor variable +/// LLDB_DAP_WELCOME_MESSAGE is defined. +static void PrintWelcomeMessage() { +#ifdef LLDB_DAP_WELCOME_MESSAGE + g_dap.SendOutput(OutputType::Console, LLDB_DAP_WELCOME_MESSAGE); +#endif +} + lldb::SBValueList *GetTopLevelScope(int64_t variablesReference) { switch (variablesReference) { case VARREF_LOCALS: @@ -657,6 +665,8 @@ void request_attach(const llvm::json::Object &request) { g_dap.SetFrameFormat(GetString(arguments, "customFrameFormat")); g_dap.SetThreadFormat(GetString(arguments, "customThreadFormat")); + PrintWelcomeMessage(); + // This is a hack for loading DWARF in .o files on Mac where the .o files // in the debug map of the main executable have relative paths which require // the lldb-dap binary to have its working directory set to that relative @@ -666,7 +676,7 @@ void request_attach(const llvm::json::Object &request) { // Run any initialize LLDB commands the user specified in the launch.json if (llvm::Error err = g_dap.RunInitCommands()) { - response["success"] = false; + kkkk response["success"] = false; EmplaceSafeString(response, "message", llvm::toString(std::move(err))); g_dap.SendJSON(llvm::json::Value(std::move(response))); return; @@ -1838,10 +1848,12 @@ void request_launch(const llvm::json::Object &request) { g_dap.SetFrameFormat(GetString(arguments, "customFrameFormat")); g_dap.SetThreadFormat(GetString(arguments, "customThreadFormat")); + PrintWelcomeMessage(); + // This is a hack for loading DWARF in .o files on Mac where the .o files - // in the debug map of the main executable have relative paths which require - // the lldb-dap binary to have its working directory set to that relative - // root for the .o files in order to be able to load debug info. + // in the debug map of the main executable have relative paths which + // require the lldb-dap binary to have its working directory set to that + // relative root for the .o files in order to be able to load debug info. if (!debuggerRoot.empty()) llvm::sys::fs::set_current_path(debuggerRoot); _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits