[Lldb-commits] [PATCH] D76814: Preserve ThreadPlanStacks for unreported threads

Jim Ingham via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Wed Mar 25 17:53:43 PDT 2020


jingham created this revision.
jingham added reviewers: clayborg, labath, friss.
Herald added a project: LLDB.
Herald added a subscriber: lldb-commits.
jingham added a parent revision: D75880: [NFC} Move ThreadPlans stacks into their own class, store it in Process by TID.

This is the final patch in the work I've done so far to support Process plugins (or their associated OS Plugins) not reporting all threads on every stop.

This commit moves the thread plan updating and dumping into the ThreadPlanStackMap.  It adds a setting (target.process.plugin-reports-all-threads) you can use to indicate that you want us to preserve unreported thread plans, and a "thread plan prune" command you can use to remove any orphaned plans.

If this is approved, I'd like to check in all these pieces.  At this stage if you opt into preserving ThreadPlanStacks, the process is pretty minimal.  I want to get this more by-hand version working because there are a lot of OS Plugins in the wild (there's on in every mach_kernel dSYM) and we have not supported them well.  So I want to get something that supports the extant plugins.

The next step is to add a way for the plugins to sync up with the thread plans, and then call that at public stop time, but I'd like to do that as a separate patch.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D76814

Files:
  lldb/include/lldb/Target/Process.h
  lldb/include/lldb/Target/Thread.h
  lldb/include/lldb/Target/ThreadPlan.h
  lldb/include/lldb/Target/ThreadPlanStack.h
  lldb/source/Commands/CommandObjectThread.cpp
  lldb/source/Commands/Options.td
  lldb/source/Target/Process.cpp
  lldb/source/Target/TargetProperties.td
  lldb/source/Target/Thread.cpp
  lldb/source/Target/ThreadList.cpp
  lldb/source/Target/ThreadPlan.cpp
  lldb/source/Target/ThreadPlanStack.cpp
  lldb/source/Target/ThreadPlanStepOut.cpp
  lldb/test/API/functionalities/plugins/python_os_plugin/stepping_plugin_threads/Makefile
  lldb/test/API/functionalities/plugins/python_os_plugin/stepping_plugin_threads/TestOSPluginStepping.py
  lldb/test/API/functionalities/plugins/python_os_plugin/stepping_plugin_threads/main.cpp
  lldb/test/API/functionalities/plugins/python_os_plugin/stepping_plugin_threads/operating_system.py
  lldb/test/API/functionalities/thread_plan/Makefile
  lldb/test/API/functionalities/thread_plan/TestThreadPlanCommands.py
  lldb/test/API/functionalities/thread_plan/main.c

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D76814.252711.patch
Type: text/x-patch
Size: 57531 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20200326/cdfac5fb/attachment-0001.bin>


More information about the lldb-commits mailing list