我正在尝试通过(非 Tiny)Go 生成带有 DWARF 调试信息的 wasm 二进制文件。尽管构建进行了多次迭代,gimli/dwarfdump仍然显示空的调试数据部分(尽管当指向本机 linux Go 可执行文件时它显示非空调试数据)。
我不知道是否存在工具错误,或者我只是做错了,非常感谢您的评论。
以这种方式运行构建:
GOOS=js GOARCH=wasm go build -a -work -x -gcflags="-N -dwarf=true -dwarflocationlists=false" -ldflags="-w=false" -o mmm . >build2.log 2>&1
Run Code Online (Sandbox Code Playgroud)
(大量实验表明我必须指定这些-cflags并-ldflags覆盖硬编码的默认构建正在为编译和链接工具提供...)
观察日志文件似乎使用正确的选项调用工具:
--- 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
Run Code Online (Sandbox Code Playgroud)
但 dwarfdump(总是)显示空的调试数据部分:
$ dwarfdump mmm
.debug_info
.debug_types
.debug_pubnames
.debug_aranges
.debug_pubtypes
Run Code Online (Sandbox Code Playgroud)