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.
pubconstDebugInfoSearchPaths = 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][]constu8,
/// 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 []constu8,
/// The path to the dirname of the ELF file, which acts as a search path for debug links.exe_dir: ?[]constu8,
pubconstnone: DebugInfoSearchPaths = .{
.debuginfod_client = null,
.global_debug = &.{},
.exe_dir = null,
};
pubfnnative(exe_path: []constu8) DebugInfoSearchPaths {
if (std.Options.elf_debug_info_search_paths) |f| returnf(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 :pnull;
},
.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");
}
}