Zig 0.17.0-dev (Split by item)

This is an example of documentation generated by ZigDoc, an alternative to Zig's built-in Auto Doc feature. See also examples in other modes/formats. The project being documented here (as the example) is the Zig library itself.

DebugInfoSearchPaths

ElfFile.DebugInfoSearchPaths
pub const DebugInfoSearchPaths = struct

File

lib/std/debug/ElfFile.zig:51

Code

pub const DebugInfoSearchPaths = struct {
    /// The location of a debuginfod client directory, which acts as a search path for build IDs. If
    /// given, we can load from this directory opportunistically, but make no effort to populate it.
    /// To avoid allocation when building the search paths, this is given as two components which
    /// will be concatenated.
    debuginfod_client: ?[2][]const u8,
    /// All "global debug directories" on the system. These are used as search paths for both debug
    /// links and build IDs. On typical systems this is just "/usr/lib/debug".
    global_debug: []const []const u8,
    /// The path to the dirname of the ELF file, which acts as a search path for debug links.
    exe_dir: ?[]const u8,

    pub const none: DebugInfoSearchPaths = .{
        .debuginfod_client = null,
        .global_debug = &.{},
        .exe_dir = null,
    };

    pub fn native(exe_path: []const u8) DebugInfoSearchPaths {
        if (std.Options.elf_debug_info_search_paths) |f| return f(exe_path);
        if (std.Options.debug_threaded_io) |t| return .{
            .debuginfod_client = p: {
                if (t.environString("DEBUGINFOD_CACHE_PATH")) |p| {
                    break :p .{ p, "" };
                }
                if (t.environString("XDG_CACHE_HOME")) |cache_path| {
                    break :p .{ cache_path, "/debuginfod_client" };
                }
                if (t.environString("HOME")) |home_path| {
                    break :p .{ home_path, "/.cache/debuginfod_client" };
                }
                break :p null;
            },
            .global_debug = &.{
                "/usr/lib/debug",
            },
            .exe_dir = std.fs.path.dirname(exe_path) orelse ".",
        };
        @compileError("std.Options.elf_debug_info_search_paths must be provided");
    }
}