ProcessInspector.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. /*
  2. * Copyright (c) 2021, Itamar S. <itamar8910@gmail.com>
  3. * Copyright (c) 2022, the SerenityOS developers.
  4. *
  5. * SPDX-License-Identifier: BSD-2-Clause
  6. */
  7. #pragma once
  8. #include "LoadedLibrary.h"
  9. #include <AK/Types.h>
  10. #include <sys/arch/regs.h>
  11. namespace Debug {
  12. class ProcessInspector {
  13. public:
  14. virtual ~ProcessInspector() = default;
  15. virtual bool poke(FlatPtr address, FlatPtr data) = 0;
  16. virtual Optional<FlatPtr> peek(FlatPtr address) const = 0;
  17. virtual PtraceRegisters get_registers() const = 0;
  18. virtual void set_registers(PtraceRegisters const&) = 0;
  19. virtual void for_each_loaded_library(Function<IterationDecision(LoadedLibrary const&)>) const = 0;
  20. LoadedLibrary const* library_at(FlatPtr address) const;
  21. struct SymbolicationResult {
  22. ByteString library_name;
  23. ByteString symbol;
  24. };
  25. Optional<SymbolicationResult> symbolicate(FlatPtr address) const;
  26. Optional<DebugInfo::SourcePositionAndAddress> get_address_from_source_position(ByteString const& file, size_t line) const;
  27. Optional<DebugInfo::SourcePosition> get_source_position(FlatPtr address) const;
  28. protected:
  29. ProcessInspector() = default;
  30. };
  31. };