デバッグシンボルを使用して libruby をコンパイルするにはどうすればよいですか?
概要
libruby.so を使用する Perl 拡張機能をデバッグしています (Ruby には詳しくありません)。私の Ubuntu ラップトップでは、ライブラリが /usr/lib/x86_64-linux-gnu/libruby-3.0.so.3.0 にインストールされていることがわかります。 -g オプションを使用してこのライブラリを再コンパイルして、デバッグ シンボルを含めたいと考えています (GDB セッションから関数呼び出しにステップインできるように)。どうやってやるの?
解決策
Ruby をソースからインストールし、 –enable-shared と –enable-debug-env で設定すると、デバッグ シンボルを含む libruby.so が得られます。
$ sudo apt-get install libyaml-dev
# install other dependencies, see: https://github.com/ruby/ruby/blob/master/doc/contributing/building_ruby.md
$ wget https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.2.tar.gz
$ tar zxvf ruby-3.2.2.tar.gz
$ cd ruby-3.2.2
$ ./configure --enable-shared --enable-debug-env optflags="-O0 -fno-omit-frame-pointer" --prefix=/opt/ruby/3.2.2
$ make
$ sudo make install
# ... Now libruby is available in /opt/ruby/3.2.2/lib/libruby.so