libunwind_cursor.h 686 B

123456789101112131415161718192021222324252627282930313233
  1. #pragma once
  2. #include <contrib/libs/libunwind/include/libunwind.h>
  3. namespace NYT::NBacktrace {
  4. ////////////////////////////////////////////////////////////////////////////////
  5. class TLibunwindCursor
  6. {
  7. public:
  8. TLibunwindCursor();
  9. explicit TLibunwindCursor(const unw_context_t& context);
  10. bool IsFinished() const;
  11. const void* GetCurrentIP() const;
  12. void MoveNext();
  13. private:
  14. unw_context_t Context_;
  15. unw_cursor_t Cursor_;
  16. bool Finished_ = false;
  17. const void* CurrentIP_ = nullptr;
  18. void Initialize();
  19. void ReadCurrentIP();
  20. };
  21. ////////////////////////////////////////////////////////////////////////////////
  22. } // namespace NYT::NBacktrace