https://github.com/charles-zablit created 
https://github.com/llvm/llvm-project/pull/213011

The reason for the failure is known but is not in the log. Add a helper 
function to map the error to a string and log it.

>From 6e6ca760f3c110d22aabb8cf5f54c3088a4af817 Mon Sep 17 00:00:00 2001
From: Charles Zablit <[email protected]>
Date: Thu, 30 Jul 2026 13:25:55 +0100
Subject: [PATCH] [lldb][Windows] Improve error messages in PlatformWindows.cpp

---
 .../Platform/Windows/PlatformWindows.cpp      | 37 ++++++++++++++++++-
 1 file changed, 35 insertions(+), 2 deletions(-)

diff --git a/lldb/source/Plugins/Platform/Windows/PlatformWindows.cpp 
b/lldb/source/Plugins/Platform/Windows/PlatformWindows.cpp
index fdf6983801ae5..df5d5a074ffb3 100644
--- a/lldb/source/Plugins/Platform/Windows/PlatformWindows.cpp
+++ b/lldb/source/Plugins/Platform/Windows/PlatformWindows.cpp
@@ -37,6 +37,7 @@
 
 #include "llvm/ADT/ScopeExit.h"
 #include "llvm/Support/ConvertUTF.h"
+#include "llvm/Support/FormatVariadic.h"
 
 using namespace lldb;
 using namespace lldb_private;
@@ -194,6 +195,32 @@ Status PlatformWindows::ConnectRemote(Args &args) {
   return error;
 }
 
+static llvm::StringRef ExpressionResultAsString(ExpressionResults result) {
+  switch (result) {
+  case eExpressionCompleted:
+    return "completed";
+  case eExpressionSetupError:
+    return "setup error";
+  case eExpressionParseError:
+    return "parse error";
+  case eExpressionDiscarded:
+    return "discarded";
+  case eExpressionInterrupted:
+    return "interrupted";
+  case eExpressionHitBreakpoint:
+    return "hit breakpoint";
+  case eExpressionTimedOut:
+    return "timed out";
+  case eExpressionResultUnavailable:
+    return "result unavailable";
+  case eExpressionStoppedForDebug:
+    return "stopped for debug";
+  case eExpressionThreadVanished:
+    return "thread vanished";
+  }
+  return "unknown error";
+}
+
 uint32_t PlatformWindows::DoLoadImage(Process *process,
                                       const FileSpec &remote_file,
                                       const std::vector<std::string> *paths,
@@ -430,7 +457,10 @@ uint32_t PlatformWindows::DoLoadImage(Process *process,
   if (result != eExpressionCompleted) {
     error = Status::FromError(diagnostics.GetAsError(
         eExpressionSetupError,
-        "LoadLibrary error: failed to execute LoadLibrary helper:"));
+        llvm::formatv("LoadLibrary error: failed to execute LoadLibrary helper 
"
+                      "({0}):",
+                      ExpressionResultAsString(result))
+            .str()));
     return LLDB_INVALID_IMAGE_TOKEN;
   }
 
@@ -936,7 +966,10 @@ extern "C" {
   ExpressionResults result = UserExpression::Evaluate(
       context, options, expression, kLoaderDecls, value);
   if (result != eExpressionCompleted)
-    return value ? value->GetError().Clone() : Status("unknown error");
+    return value ? value->GetError().Clone()
+                 : Status::FromErrorStringWithFormatv(
+                       "failed to execute loader helper ({0})",
+                       ExpressionResultAsString(result));
 
   if (value && value->GetError().Fail())
     return value->GetError().Clone();

_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to