Mercurial > hg > Papers > 2019 > anatofuz-thesis
changeset 66:7955d5a147bd
update
author | anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 18 Feb 2019 15:14:24 +0900 |
parents | 5ec812f6e3d6 |
children | 1a7622df57b8 |
files | paper/chapter5.tex paper/main.pdf |
diffstat | 2 files changed, 11 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/paper/chapter5.tex Mon Feb 18 11:51:48 2019 +0900 +++ b/paper/chapter5.tex Mon Feb 18 15:14:24 2019 +0900 @@ -11,7 +11,17 @@ そのため、 命令処理部分を別ファイルに書き出すなどのモジュール化が可能となった。 \section{CbCMoarVMのデバッグ} -前章でCbCMoarVMはCodeGearに直接break pointを設定出来る事を示した。 +主要なデバッガであるgdbやlldbでは、 関数には直接break pointを設定する事が可能である。 +MoarVMのバイトコードディスパッチ部分はcase文やラベルgotoに変換され、 関数として扱う事が出来ない。 +その為、 命令に対応する処理部分でbreak pointを設定を行う場合、 まず処理が書かれているMVM\_interp\_run関数にbreak pointを設置する必要がある。 +プロセス起動後、 関数が書かれているinterp.cファイル中の行番号を指定してbreak pointを付けなければならない。 +また、ディスパッチでは数値又はラベルを利用している為、 デバッガ上で直接どの命令を実行するか確認をする事が困難である。 + + +CodeGearは関数として扱う事ができる為、 break pointとして直接設定する事が可能である。 +また、 gdbなどのデバッガは、 実行するべき関数名を表示する事が可能であるため、 CodeGearの名前も表示可能である。 +CodeGear名は命令と対応している為、 CodeGear名から命令名を推測する事が可能となった。 + \section{パフォーマンス} \section{Threaded Code}