gosym を使って引数名を取得してみる

golangで実行時に関数の引数の名前を取得する方法 を見て、 Go には debug ってパッケージも合ったなーとおもって試してみました。

当初、同じパッケージ内にダミーの関数を用意してやろうと思ったのですが、リンク時に strip されるらしく、 さらに呼び出ししてもインライン展開されるらしく、シンボルテーブルに載せるのが面倒で、結局 os.Open なら成功しました。

debug/gosym は Go 独自の詳細なシンボルテーブルを参照するのですが、 elf, PE などそれぞれ用に コード書かないといけないし、リンク時にシンボルが消えてる可能性があるので、挑戦するなら debug/dwarf の方が 良かったかもしれません。

このブログに乗せているコードは引用を除き CC0 1.0 で提供します。