You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查看Zig语言程序的汇编输出?

查看Zig程序带行号映射的汇编输出

Zig版本

0.11.0-dev.3299+34865d693

问题描述

希望查看程序的汇编输出,且汇编指令能映射到对应的文件名和行号,方便快速定位其来源。

项目文件

build.zig

const std = @import("std");

pub fn build(b: *std.Build.Builder) !void {
    // 确定编译目标
    const target = b.standardTargetOptions(.{});

    // 设置优化选项
    const optimize = b.standardOptimizeOption(.{});

    // 创建示例可执行文件
    const exe = b.addExecutable(.{
        .name = "app",
        .root_source_file = .{ .path = "main.zig" },
        .target = target,
        .optimize = optimize,
    });

    // 执行"zig build"时将可执行文件安装到指定目录
    b.installArtifact(exe);
}

main.zig

const std = @import("std");

pub fn main() void {
    std.debug.print("Hello, {s}!\n", .{"World"});
}

解决方法

以下几种方式可以生成带行号映射的汇编输出:

  • 直接用zig build-exe生成汇编
    使用-S参数生成汇编文件,搭配-g参数保留调试信息(包含行号映射):

    zig build-exe main.zig -S -g
    

    执行后会生成main.s文件,汇编指令旁会带有# main.zig:X这样的标记,对应源码的行号位置。

  • 通过build.zig配置生成汇编
    修改build.zig,添加专门的汇编生成步骤:

    const std = @import("std");
    
    pub fn build(b: *std.Build.Builder) !void {
        const target = b.standardTargetOptions(.{});
        const optimize = b.standardOptimizeOption(.{});
    
        const exe = b.addExecutable(.{
            .name = "app",
            .root_source_file = .{ .path = "main.zig" },
            .target = target,
            .optimize = optimize,
        });
    
        // 添加生成汇编的步骤
        const asm_step = b.addAssembly(.{
            .source_file = exe.root_source_file,
            .target = target,
            .optimize = optimize,
            .flags = &.{"-g"}, // 保留调试信息以映射行号
        });
        b.getInstallStep().dependOn(&asm_step.step);
    
        b.installArtifact(exe);
    }
    

    执行zig build后,汇编文件会生成在zig-out/bin/app.s路径下(具体路径可能因目标平台和优化选项略有差异)。

  • 用zig objdump查看已有二进制的汇编
    如果已经编译出二进制文件,使用zig objdump加-S参数,可混合显示汇编指令与对应源码:

    zig objdump -S zig-out/bin/app
    

    终端会输出穿插着Zig源码行的汇编内容,方便直接对照查看。

内容的提问来源于stack exchange,提问作者SilbinaryWolf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 08:43:21