-
Notifications
You must be signed in to change notification settings - Fork 14.3k
[lldb-dap] Add a CMake variable for defining a welcome message #78811
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
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.
@llvm/pr-subscribers-lldb Author: Walter Erquinigo (walter-erquinigo) Changeslldb-dap instances managed by other extensions benefit from having a welcome message with, for example, a basic user guide or a troubleshooting message. Full diff: https://github.com/llvm/llvm-project/pull/78811.diff 2 Files Affected:
diff --git a/lldb/tools/lldb-dap/CMakeLists.txt b/lldb/tools/lldb-dap/CMakeLists.txt
index c71c80981890bd5..554567eb3b0e236 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 different locations.
diff --git a/lldb/tools/lldb-dap/lldb-dap.cpp b/lldb/tools/lldb-dap/lldb-dap.cpp
index 0d45b0379c85261..1e1af990cca0b41 100644
--- a/lldb/tools/lldb-dap/lldb-dap.cpp
+++ b/lldb/tools/lldb-dap/lldb-dap.cpp
@@ -106,6 +106,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:
@@ -655,6 +663,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
@@ -664,7 +674,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;
@@ -1824,10 +1834,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);
|
Merging this innocuous PR very quickly due to time constraints, but very happy to apply any feedback in a subsequent PR. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks like the typo will break the buildbots and we want the welcome message to be printed for launches too right?
@@ -655,6 +663,8 @@ void request_attach(const llvm::json::Object &request) { | |||
g_dap.SetFrameFormat(GetString(arguments, "customFrameFormat")); | |||
g_dap.SetThreadFormat(GetString(arguments, "customThreadFormat")); | |||
|
|||
PrintWelcomeMessage(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We want this in request_launch(...)
as well as request_attach(...)
right?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, it's defined in both places
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.