[lldb/Plugins] Add support for ScriptedThread in ScriptedProcess
This patch introduces the `ScriptedThread` class with its python interface. When used with `ScriptedProcess`, `ScriptedThreaad` can provide various information such as the thread state, stop reason or even its register context. This can be used to reconstruct the program stack frames using lldb's unwinder. rdar://74503836 Differential Revision: https://reviews.llvm.org/D107585 Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
This commit is contained in:
1 parent
6393c21d47
commit
59d8dd79e1
21 files changed
+932
-74
No files matched your search
@@ -0,0 +1,48 @@
|
||||
//===-- ScriptedThreadPythonInterface.h ------------------------*- C++ -*-===//
|
||||
//
|
||||
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
// See https://llvm.org/LICENSE.txt for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_SCRIPTEDTHREADPYTHONINTERFACE_H
|
||||
#define LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_SCRIPTEDTHREADPYTHONINTERFACE_H
|
||||
|
||||
#include "lldb/Host/Config.h"
|
||||
|
||||
#if LLDB_ENABLE_PYTHON
|
||||
|
||||
#include "ScriptedPythonInterface.h"
|
||||
#include "lldb/Interpreter/ScriptedProcessInterface.h"
|
||||
|
||||
namespace lldb_private {
|
||||
class ScriptedThreadPythonInterface : public ScriptedThreadInterface,
|
||||
public ScriptedPythonInterface {
|
||||
public:
|
||||
ScriptedThreadPythonInterface(ScriptInterpreterPythonImpl &interpreter);
|
||||
|
||||
StructuredData::GenericSP
|
||||
CreatePluginObject(llvm::StringRef class_name, ExecutionContext &exe_ctx,
|
||||
StructuredData::DictionarySP args_sp) override;
|
||||
|
||||
lldb::tid_t GetThreadID() override;
|
||||
|
||||
llvm::Optional<std::string> GetName() override;
|
||||
|
||||
lldb::StateType GetState() override;
|
||||
|
||||
llvm::Optional<std::string> GetQueue() override;
|
||||
|
||||
StructuredData::DictionarySP GetStopReason() override;
|
||||
|
||||
StructuredData::ArraySP GetStackFrames() override;
|
||||
|
||||
StructuredData::DictionarySP GetRegisterInfo() override;
|
||||
|
||||
llvm::Optional<std::string> GetRegisterContext() override;
|
||||
};
|
||||
} // namespace lldb_private
|
||||
|
||||
#endif // LLDB_ENABLE_PYTHON
|
||||
#endif // LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_SCRIPTEDPROCESSTHREADINTERFACE_H
|
||||
Reference in new issue
Block a user