[Lldb-commits] [lldb] [lldb/Target] Add SyntheticFrameProvider class (PR #166664)

Jonas Devlieghere via lldb-commits lldb-commits at lists.llvm.org
Thu Nov 6 10:12:51 PST 2025


================
@@ -356,6 +356,34 @@ class PluginManager {
   GetScriptInterpreterForLanguage(lldb::ScriptLanguage script_lang,
                                   Debugger &debugger);
 
+  // SyntheticFrameProvider (scripted)
+  static bool
+  RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
+                 ScriptedFrameProviderCreateInstance create_callback);
+
+  static bool
+  UnregisterPlugin(ScriptedFrameProviderCreateInstance create_callback);
+
+  static ScriptedFrameProviderCreateInstance
+  GetScriptedFrameProviderCreateCallbackAtIndex(uint32_t idx);
+
+  static ScriptedFrameProviderCreateInstance
+  GetScriptedFrameProviderCreateCallbackForPluginName(llvm::StringRef name);
+
+  // SyntheticFrameProvider (C++)
+  static bool
+  RegisterPlugin(llvm::StringRef name, llvm::StringRef description,
+                 SyntheticFrameProviderCreateInstance create_callback);
+
+  static bool
+  UnregisterPlugin(SyntheticFrameProviderCreateInstance create_callback);
+
+  static SyntheticFrameProviderCreateInstance
+  GetSyntheticFrameProviderCreateCallbackAtIndex(uint32_t idx);
+
+  static SyntheticFrameProviderCreateInstance
+  GetSyntheticFrameProviderCreateCallbackForPluginName(llvm::StringRef name);
----------------
JDevlieghere wrote:

Now this looks like two plugins. Can we not do one plugin, with two callbacks, one for creating a "Scripted" instance, and one for the C++ backed instance?

Something like:
```
  static bool RegisterPlugin(
      llvm::StringRef name, llvm::StringRef description,
      SyntheticFrameProviderCreateInstance create_callback,
      SyntheticFrameProviderCreateScriptedInstance create_scripted_callback)

```

https://github.com/llvm/llvm-project/pull/166664


More information about the lldb-commits mailing list