はじめに 仮想マシンが導入されたRubyの動作を理解するには、仮想マシン内のスタックの状態変化を頭の中でイメージできるようになることが重要です。そこで今回は、仮想マシン内のスタックの状態変化を追いやすくする小さなツールを作り、そのツールをGDBと組み合わせて使うことで、仮想マシン内のスタックの状態変化を観察できるようにする方法を紹介します。なお、使用するソースコードはr11701です。 ツールの作成 仮想マシン内のスタックの状態変化を追いやすくするために、以下の機能をrubyに追加します。 breakpoint: RubyプログラムからSIGTRAPを発生させる dump_stack: スレッドに関連づけられているスタックの中身をinspectした状態でダンプする 前者を実装すると、GDB上でRubyプログラムを実行し、「breakpoint」と書かれた所が実行された時に、制御がGDBに移
![YARV: GDBとちょっとしたHackによる仮想マシン内のスタックの状態変化の観察 - Accept Things](https://cdn-ak-scissors.b.st-hatena.com/image/square/2bcca88a7ea06b7be8642a2d300c9baac704b994/height=288;version=1;width=512/https%3A%2F%2Fimages-fe.ssl-images-amazon.com%2Fimages%2FI%2F51yVHZxEmuL._SL160_.jpg)