Inspector.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. /*
  2. * Copyright (c) 2021, Itamar S. <itamar8910@gmail.com>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include "Reader.h"
  8. #include <AK/Noncopyable.h>
  9. #include <LibDebug/ProcessInspector.h>
  10. namespace Coredump {
  11. class Inspector : public Debug::ProcessInspector {
  12. AK_MAKE_NONCOPYABLE(Inspector);
  13. AK_MAKE_NONMOVABLE(Inspector);
  14. public:
  15. static OwnPtr<Inspector> create(StringView coredump_path, Function<void(float)> on_progress = {});
  16. virtual ~Inspector() override = default;
  17. // ^Debug::ProcessInspector
  18. virtual bool poke(FlatPtr address, FlatPtr data) override;
  19. virtual Optional<FlatPtr> peek(FlatPtr address) const override;
  20. virtual PtraceRegisters get_registers() const override;
  21. virtual void set_registers(PtraceRegisters const&) override;
  22. virtual void for_each_loaded_library(Function<IterationDecision(Debug::LoadedLibrary const&)>) const override;
  23. private:
  24. Inspector(NonnullOwnPtr<Reader>&&, Function<void(float)> on_progress);
  25. void parse_loaded_libraries(Function<void(float)> on_progress);
  26. size_t number_of_libraries_in_coredump() const;
  27. NonnullOwnPtr<Reader> m_reader;
  28. Vector<NonnullOwnPtr<Debug::LoadedLibrary>> m_loaded_libraries;
  29. };
  30. }