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

求助:Go编译Wasm二进制后DWARF调试段为空的问题排查

标准Go编译Wasm无法生成有效DWARF调试信息的问题

我尝试使用标准Go(非TinyGo)生成包含DWARF调试信息的Wasm二进制文件,但无论如何调整编译参数,dwarfdump工具始终显示调试数据段为空。不过用该工具处理Linux原生Go可执行文件时,能正常显示非空调试数据。不确定是工具存在bug还是我的操作有误,恳请大家提供建议。

编译命令

GOOS=js GOARCH=wasm go build -a -work -x -gcflags="-N -dwarf=true -dwarflocationlists=false" -ldflags="-w=false" -o mmm . >build2.log 2>&1

注:经过多次测试,必须指定上述-gcflags和-ldflags参数,才能覆盖编译和链接工具的硬编码默认值。

编译日志关键片段

从build日志可以看到,编译和链接阶段已正确应用指定参数:

--- snip ---
/usr/local/go/pkg/tool/linux_amd64/compile -o $WORK/b001/_pkg_.a -trimpath "$WORK/b001=>" -p main -lang=go1.14 -complete -buildid wrV2MKYl_2wAOfC9V6TW/wrV2MKYl_2wAOfC9V6TW
 -dwarf=false -goversion go1.19.4 -N -dwarf=true -dwarflocationlists=false -nolocalimports -importcfg $WORK/b001/importcfg -pack ./0_components_vgen.go ./generate.go ./main_wasm.go
--- snip ---
/usr/local/go/pkg/tool/linux_amd64/link -o $WORK/b001/exe/a.out -importcfg $WORK/b001/importcfg.link -buildmode=exe -buildid=NCMJg-CFGnRWYpYW5of2/wrV2MKYl_2wAOfC9V6TW/KT0X-n_LvOuN7jmi-7Tt/NCMJg-CFGnRWYpYW5of2 -extld=gcc -w=false $WORK/b001/_pkg_.a
/usr/local/go/pkg/tool/linux_amd64/buildid -w $WORK/b001/exe/a.out # internal
cp $WORK/b001/exe/a.out mmm

dwarfdump输出结果

运行dwarfdump后,所有调试段均为空:

$ dwarfdump mmm

.debug_info

.debug_types

.debug_pubnames

.debug_aranges

.debug_pubtypes

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 14:45:42