从 go 在 wasm 二进制文件中生成 DWARF 调试信息?

Bob*_*bHy 10 go webassembly

我正在尝试通过(非 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)