changeset 40:2a21f7911f92

add debug info
author Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Fri, 09 Nov 2018 13:31:27 +0900
parents e216aa15e656
children de0f0fa18b71
files Paper/anatofuz.pdf Paper/anatofuz.tex Paper/src/trace_cbc.txt
diffstat 3 files changed, 19 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
Binary file Paper/anatofuz.pdf has changed
--- a/Paper/anatofuz.tex	Fri Nov 09 13:15:45 2018 +0900
+++ b/Paper/anatofuz.tex	Fri Nov 09 13:31:27 2018 +0900
@@ -381,10 +381,13 @@
 しかしMoarVMが実行する命令は膨大な数がある.
 その為gdbでMoarVMをCbCとオリジナル版での並列デバッグを人間が同時に行うことは困難である.
 Perlなどのスクリプトを用いて自動的に解析したいため,ログを残す為にscriptコマンドを実行した状態でgdbを起動する.
-
+トレースでは実行した命令名のみ取得できれば良い為,Code\ref{cbc_b},\ref{orig_b}でdebug pointにcommandとして設定している様に,設定されたcur\_opの値を出力し続けるのみの動きを導入する.
 
+実際に実行したログ・ファイルの一部をそれぞれCode\ref{debug_origmoar},\ref{debug_cbcmoar}に示す.
 \lstinputlisting[label=debug_origmoar, caption=オリジナル版MoarVMのバイトコードのトレース]{./src/origin_breakpoint.txt}
+\lstinputlisting[label=debug_cbcmoar, caption=CbCMoarVMのバイトコードのトレース]{./src/trace_cbc.txt}
 
+オリジナル版では実際に実行する命令処理はラベルに変換されてしまう為名前をデバッガ上では出力できないが,CbCでは出力する事が可能である.
 CbCとオリジナルのCODES,LABELの添字は対応している為,ログの解析を行う際はそれぞれの添字を抽出し違いが発生している箇所を探索する.
 これらはscriptコマンドが作成したログを元に異なる箇所を発見するスクリプトを用意し自動化する.
 \lstinputlisting[label=logs2, caption=バイトコードの差分検知の一部分]{./src/logs2.txt}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/trace_cbc.txt	Fri Nov 09 13:31:27 2018 +0900
@@ -0,0 +1,15 @@
+Breakpoint 2, cbc_next (i=0x7fffffffdc30) at src/core/cbc-interp.cbc:61
+61	    goto NEXT(i);
+$1 = (void (*)(INTERP)) 0x7ffff7566f53 <cbc_takeclosure>
+$2 = 162
+
+Breakpoint 2, cbc_next (i=0x7fffffffdc30) at src/core/cbc-interp.cbc:61
+61	    goto NEXT(i);
+$3 = (void (*)(INTERP)) 0x7ffff7565f86 <cbc_checkarity>
+$4 = 140
+
+Breakpoint 2, cbc_next (i=0x7fffffffdc30) at src/core/cbc-interp.cbc:61
+61	    goto NEXT(i);
+$5 = (void (*)(INTERP)) 0x7ffff7579d06 <cbc_paramnamesused>
+$6 = 558
+