[Lldb-commits] [PATCH] D150315: Make sure the "Relevant Frame" gets selected before the initial stop printing

Jim Ingham via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Wed May 10 15:11:39 PDT 2023


jingham created this revision.
jingham added reviewers: mib, JDevlieghere.
Herald added a project: All.
jingham requested review of this revision.
Herald added a project: LLDB.
Herald added a subscriber: lldb-commits.

  When the Debugger runs HandleProcessEvent it should allow
  selecting the "Most relevant" frame.
  
  If you don't do that, then the correct frame gets selected, but it
  happens AFTER the frame info gets printed in the stop message, so
  you don't see the selected frame.
  
  The test for this hid the issue because it ran `frame info` and
  checked the result of that.  That happens after the recognizer selects
  the frame, and so it was right.  But if the recognizer is working
  correctly it will have already done the same printing in the stop
  message, and this way we also verify that the stop message was right.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D150315

Files:
  lldb/source/Core/Debugger.cpp
  lldb/test/Shell/Recognizer/assert.test


Index: lldb/test/Shell/Recognizer/assert.test
===================================================================
--- lldb/test/Shell/Recognizer/assert.test
+++ lldb/test/Shell/Recognizer/assert.test
@@ -9,7 +9,6 @@
 # RUN: %lldb -b -s %s %t.out | FileCheck %s
 run
 # CHECK: thread #{{.*}}stop reason = hit program assert
-frame info
 # CHECK: frame #{{.*}}`main at assert.c
 frame recognizer info 0
 # CHECK: frame 0 is recognized by Assert StackFrame Recognizer
Index: lldb/source/Core/Debugger.cpp
===================================================================
--- lldb/source/Core/Debugger.cpp
+++ lldb/source/Core/Debugger.cpp
@@ -1699,8 +1699,10 @@
 
     // Display running state changes first before any STDIO
     if (got_state_changed && !state_is_stopped) {
+      // This is a public stop which we are going to announce to the user, so 
+      // we should force the most relevant frame selection here.
       Process::HandleProcessStateChangedEvent(event_sp, output_stream_sp.get(),
-                                              DoNoSelectMostRelevantFrame,
+                                              SelectMostRelevantFrame,
                                               pop_process_io_handler);
     }
 
@@ -1740,7 +1742,7 @@
     // Now display any stopped state changes after any STDIO
     if (got_state_changed && state_is_stopped) {
       Process::HandleProcessStateChangedEvent(event_sp, output_stream_sp.get(),
-                                              DoNoSelectMostRelevantFrame,
+                                              SelectMostRelevantFrame,
                                               pop_process_io_handler);
     }
 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D150315.521117.patch
Type: text/x-patch
Size: 1675 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20230510/44a1831d/attachment.bin>


More information about the lldb-commits mailing list