libultraship
Reimplementations of libultra (N64 SDK) functions for modern hardware
Loading...
Searching...
No Matches
Ship::CrashHandler Class Reference

Installs platform-specific signal / exception handlers to capture crash information. More...

#include <CrashHandler.h>

Inheritance diagram for Ship::CrashHandler:
[legend]
Collaboration diagram for Ship::CrashHandler:
[legend]

Public Member Functions

 CrashHandler ()
 Installs the platform crash handlers with no application callback.
 
 ~CrashHandler ()
 
 CrashHandler (CrashHandlerCallback callback)
 Installs the platform crash handlers and immediately registers callback.
 
void RegisterCallback (CrashHandlerCallback callback)
 Registers (or replaces) the application callback.
 
void AppendLine (const char *str)
 Appends str followed by a newline to the crash report buffer.
 
void AppendStr (const char *str)
 Appends str (without a trailing newline) to the crash report buffer.
 
void PrintCommon ()
 Writes platform-agnostic crash header information (OS, build info, etc.) to the report buffer.
 
void PrintRegisters (ucontext_t *ctx)
 Appends the values of the CPU registers from ctx to the crash report.
 
- Public Member Functions inherited from Ship::Component
 Component (const std::string &name, std::shared_ptr< Context > context=nullptr)
 Constructs a Component with the given name.
 
virtual ~Component ()
 
void Init (const nlohmann::json &initArgs=nlohmann::json::object())
 Performs one-time initialization of this component.
 
bool IsInitialized () const
 Returns true once Init() (or MarkInitialized()) has completed successfully.
 
const std::string & GetName () const
 Returns the name of this Component.
 
std::string ToString () const
 Returns a human-readable string representation (e.g. "Name (id)").
 
std::string ToTreeString (int depth=0) const
 Returns a human-readable tree representation of this component and its children.
 
 operator std::string () const
 Conversion operator to std::string; equivalent to ToString().
 
ParentComponentListGetParents ()
 Returns a mutable reference to the parent list.
 
const ParentComponentListGetParents () const
 Returns a const reference to the parent list.
 
ComponentListGetChildren ()
 Returns a mutable reference to the child list.
 
const ComponentListGetChildren () const
 Returns a const reference to the child list.
 
virtual std::shared_ptr< ComponentTryGetSharedComponent () noexcept
 Returns a shared_ptr to this Component when available, otherwise nullptr.
 
virtual std::shared_ptr< ComponentGetSharedComponent ()
 Returns a shared_ptr to this Component via the correct enable_shared_from_this base.
 
template<typename T >
bool HasInChildren () const
 Checks whether any descendant Component matches type T via BFS.
 
template<typename T >
std::shared_ptr< T > GetFirstInChildren () const
 Returns the first descendant that matches type T via BFS.
 
template<typename T >
std::shared_ptr< std::vector< std::shared_ptr< T > > > GetInChildren () const
 Returns all descendants that match type T via BFS.
 
template<typename T >
bool HasInParents () const
 Checks whether any ancestor Component matches type T via BFS.
 
template<typename T >
std::shared_ptr< T > GetFirstInParents () const
 Returns the first ancestor that matches type T via BFS.
 
template<typename T >
std::shared_ptr< std::vector< std::shared_ptr< T > > > GetInParents () const
 Returns all ancestors that match type T via BFS.
 
- Public Member Functions inherited from Ship::Part
 Part ()
 Constructs a Part and assigns it a unique ID.
 
 Part (std::shared_ptr< Context > context)
 Constructs a Part with an explicit Context reference and unique ID.
 
virtual ~Part ()=default
 
uint64_t GetId () const
 Returns the unique identifier for this Part.
 
bool operator== (const Part &other) const
 Compares two Parts for equality by their unique IDs.
 
std::shared_ptr< ContextGetContext () const
 Returns the Context this Part belongs to, or nullptr if unset.
 
void SetContext (std::shared_ptr< Context > ctx)
 Sets the Context this Part belongs to.
 

Additional Inherited Members

- Protected Member Functions inherited from Ship::Component
virtual void OnInit (const nlohmann::json &initArgs=nlohmann::json::object())
 Override this to implement component-specific initialization logic.
 
void MarkInitialized ()
 Marks this component as initialized without going through Init().
 
template<typename T >
std::shared_ptr< T > RequireDependency (const std::shared_ptr< T > &dependency, const std::string &dependencyName) const
 Returns a cached dependency after validating it exists and is initialized.
 
- Protected Member Functions inherited from Ship::Part
virtual void OnRemoved (bool forced)
 Called after this Part has been removed from a PartList.
 

Detailed Description

Installs platform-specific signal / exception handlers to capture crash information.

CrashHandler sets up OS-level handlers (POSIX signals on Linux, SEH on Windows) that fill a fixed-size text buffer with a human-readable crash report, then invoke any registered CrashHandlerCallback so the application can append game-specific state before the process exits.

Required Context children (looked up at crash time):

  • Logger — if present, its underlying spdlog logger is flushed after the crash report is written to ensure log entries are not lost. It is optional; the crash handler functions correctly without it.

Obtain the instance from Context::GetChildren().GetFirst<CrashHandler>().

Constructor & Destructor Documentation

◆ CrashHandler() [1/2]

Ship::CrashHandler::CrashHandler ( )

Installs the platform crash handlers with no application callback.

◆ ~CrashHandler()

Ship::CrashHandler::~CrashHandler ( )

◆ CrashHandler() [2/2]

Ship::CrashHandler::CrashHandler ( CrashHandlerCallback  callback)

Installs the platform crash handlers and immediately registers callback.

Parameters
callbackFunction to invoke when a crash is detected; may be nullptr.

Member Function Documentation

◆ AppendLine()

void Ship::CrashHandler::AppendLine ( const char *  str)

Appends str followed by a newline to the crash report buffer.

Parameters
strNull-terminated string to append.

◆ AppendStr()

void Ship::CrashHandler::AppendStr ( const char *  str)

Appends str (without a trailing newline) to the crash report buffer.

Parameters
strNull-terminated string to append.

◆ PrintCommon()

void Ship::CrashHandler::PrintCommon ( )

Writes platform-agnostic crash header information (OS, build info, etc.) to the report buffer.

◆ PrintRegisters()

void Ship::CrashHandler::PrintRegisters ( ucontext_t *  ctx)

Appends the values of the CPU registers from ctx to the crash report.

Parameters
ctxSignal handler context containing the register state.

◆ RegisterCallback()

void Ship::CrashHandler::RegisterCallback ( CrashHandlerCallback  callback)

Registers (or replaces) the application callback.

Parameters
callbackFunction to invoke on crash; pass nullptr to clear the callback.

The documentation for this class was generated from the following file: