zhyty created this revision.
Herald added a project: All.
zhyty requested review of this revision.
Herald added a project: LLDB.
Herald added a subscriber: lldb-commits.

It isn't useful for users to see "<unknown>" as a stack trace when lldb fails 
to symbolicate a stack frame. I've replaced "<unknown>" with the value of the 
program counter instead.

Test Plan:

To test this, I opened a target that lldb fails to symbolicate in
VSCode, and observed in the CALL STACK section that instead of being
shown as "<unknown>", those stack frames are represented by their
program counters.

I also ran `lldb-dotest -p TestVSCode` and saw that the tests passed.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D156732

Files:
  lldb/tools/lldb-vscode/JSONUtils.cpp


Index: lldb/tools/lldb-vscode/JSONUtils.cpp
===================================================================
--- lldb/tools/lldb-vscode/JSONUtils.cpp
+++ lldb/tools/lldb-vscode/JSONUtils.cpp
@@ -762,8 +762,14 @@
   const char *func_name = frame.GetFunctionName();
   if (func_name)
     frame_name = func_name;
-  else
-    frame_name = "<unknown>";
+  else {
+    // If the function name is unavailable, display the pc address as a 
16-digit
+    // hex string.
+    frame_name.clear();
+    llvm::raw_string_ostream os(frame_name);
+    os << llvm::format_hex(frame.GetPC(), 18);
+    os.flush();
+  }
   bool is_optimized = frame.GetFunction().GetIsOptimized();
   if (is_optimized)
     frame_name += " [opt]";


Index: lldb/tools/lldb-vscode/JSONUtils.cpp
===================================================================
--- lldb/tools/lldb-vscode/JSONUtils.cpp
+++ lldb/tools/lldb-vscode/JSONUtils.cpp
@@ -762,8 +762,14 @@
   const char *func_name = frame.GetFunctionName();
   if (func_name)
     frame_name = func_name;
-  else
-    frame_name = "<unknown>";
+  else {
+    // If the function name is unavailable, display the pc address as a 16-digit
+    // hex string.
+    frame_name.clear();
+    llvm::raw_string_ostream os(frame_name);
+    os << llvm::format_hex(frame.GetPC(), 18);
+    os.flush();
+  }
   bool is_optimized = frame.GetFunction().GetIsOptimized();
   if (is_optimized)
     frame_name += " [opt]";
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to