DoxigAlpha

Function parameters

Parameters

#
thread_context:*std.debug.ThreadContext

How is this different than `Module` when the host is Windows?

Types

#
WindowsModule
How is this different than `Module` when the host is Windows?
VirtualMachine
This is a virtual machine that runs DWARF call frame instructions.

Functions in this namespace

Functions

#
readElfDebugInfo
Reads debug info from an ELF file, or the current binary if none in specified.
unwindFrameMachO
Unwind a frame using MachO compact unwind info (from __unwind_info).
stripInstructionPtrAuthCode
Some platforms use pointer authentication - the upper bits of instruction pointers contain a signature.
unwindFrameDwarf
Unwind a stack frame using DWARF unwinding info, updating the register context.
supportsUnwinding
Tells whether unwinding for this target is *implemented* here in the Zig

Error sets in this namespace

Error Sets

#

Tells whether unwinding for the host is implemented.

Values

#
supports_unwinding
Tells whether unwinding for the host is implemented.

Source

Implementation

#
pub fn init(
    allocator: Allocator,
    thread_context: *std.debug.ThreadContext,
) !UnwindContext {
    comptime assert(supports_unwinding);

    const pc = stripInstructionPtrAuthCode(
        (try regValueNative(thread_context, ip_reg_num, null)).*,
    );

    const context_copy = try allocator.create(std.debug.ThreadContext);
    std.debug.copyContext(thread_context, context_copy);

    return .{
        .allocator = allocator,
        .cfa = null,
        .pc = pc,
        .thread_context = context_copy,
        .reg_context = undefined,
        .vm = .{},
        .stack_machine = .{},
    };
}