LLDB mainline
ScriptedStackFrameRecognizerPythonInterface.cpp
Go to the documentation of this file.
1//===----------------------------------------------------------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#include "../lldb-python.h"
10
14
15#include "../SWIGPythonBridge.h"
18
19using namespace lldb;
20using namespace lldb_private;
21using namespace lldb_private::python;
22
28
29llvm::Expected<StructuredData::GenericSP>
35
43
45 lldb::StackFrameSP frame_sp) {
47 StructuredData::ObjectSP obj = Dispatch("should_hide", error, frame_sp);
48
49 if (!ScriptedInterface::CheckStructuredDataObject(LLVM_PRETTY_FUNCTION, obj,
50 error))
51 return false;
52
53 return obj->GetBooleanValue();
54}
55
63
69
71 lldb::StackFrameSP frame_sp) {
74 Dispatch("get_stop_description", error, frame_sp);
75 if (!ScriptedInterface::CheckStructuredDataObject(LLVM_PRETTY_FUNCTION, obj,
76 error))
77 return "";
78 return obj->GetStringValue().str();
79}
80
82 const std::vector<llvm::StringRef> ci_usages = {
83 "frame recognizer add -l <script-name> [-s <shlib> ...] "
84 "[-n <symbol> ... | -x <symbol-regex>] [-f false] "
85 "[--mangled-name-preference <mode>]"};
88 "Recognize a stack frame and provide extra information about it "
89 "(recognized arguments, exception object, stop description, "
90 "hidden/most-relevant frame).",
92 eScriptLanguagePython, {ci_usages, {}});
93}
94
static llvm::raw_ostream & error(Stream &strm)
static bool RegisterPlugin(llvm::StringRef name, llvm::StringRef description, ABICreateInstance create_callback)
static bool UnregisterPlugin(ABICreateInstance create_callback)
static bool CheckStructuredDataObject(llvm::StringRef caller, T obj, Status &error)
static bool CreateInstance(lldb::ScriptLanguage language, ScriptedInterfaceUsages usages)
ScriptedPythonInterface(ScriptInterpreterPythonImpl &interpreter)
T Dispatch(llvm::StringRef method_name, Status &error, Args &&...args)
llvm::Expected< StructuredData::GenericSP > CreatePluginObject(const ScriptedMetadata &scripted_metadata, StructuredData::Generic *script_obj, Args... args)
lldb::StackFrameSP SelectMostRelevantFrame(lldb::StackFrameSP frame_sp) override
lldb::ValueObjectSP GetException(lldb::StackFrameSP frame_sp) override
llvm::Expected< StructuredData::GenericSP > CreatePluginObject(const ScriptedMetadata &scripted_metadata) override
lldb::ValueObjectListSP GetRecognizedArguments(lldb::StackFrameSP frame_sp) override
An error handling class.
Definition Status.h:118
std::shared_ptr< Object > ObjectSP
A class that represents a running process on the host machine.
@ eScriptLanguagePython
@ eScriptedExtensionScriptedStackFrameRecognizer
std::shared_ptr< lldb_private::StackFrame > StackFrameSP
std::shared_ptr< lldb_private::ValueObject > ValueObjectSP
std::shared_ptr< lldb_private::ValueObjectList > ValueObjectListSP