Mercurial > hg > Papers > 2019 > anatofuz-prosym
comparison Paper/anatofuz.tex @ 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 | 1abd6fc0abe8 |
comparison
equal
deleted
inserted
replaced
39:e216aa15e656 | 40:2a21f7911f92 |
---|---|
379 | 379 |
380 \subsection{MoarVMの並列デバッグ手法} | 380 \subsection{MoarVMの並列デバッグ手法} |
381 しかしMoarVMが実行する命令は膨大な数がある. | 381 しかしMoarVMが実行する命令は膨大な数がある. |
382 その為gdbでMoarVMをCbCとオリジナル版での並列デバッグを人間が同時に行うことは困難である. | 382 その為gdbでMoarVMをCbCとオリジナル版での並列デバッグを人間が同時に行うことは困難である. |
383 Perlなどのスクリプトを用いて自動的に解析したいため,ログを残す為にscriptコマンドを実行した状態でgdbを起動する. | 383 Perlなどのスクリプトを用いて自動的に解析したいため,ログを残す為にscriptコマンドを実行した状態でgdbを起動する. |
384 | 384 トレースでは実行した命令名のみ取得できれば良い為,Code\ref{cbc_b},\ref{orig_b}でdebug pointにcommandとして設定している様に,設定されたcur\_opの値を出力し続けるのみの動きを導入する. |
385 | 385 |
386 実際に実行したログ・ファイルの一部をそれぞれCode\ref{debug_origmoar},\ref{debug_cbcmoar}に示す. | |
386 \lstinputlisting[label=debug_origmoar, caption=オリジナル版MoarVMのバイトコードのトレース]{./src/origin_breakpoint.txt} | 387 \lstinputlisting[label=debug_origmoar, caption=オリジナル版MoarVMのバイトコードのトレース]{./src/origin_breakpoint.txt} |
387 | 388 \lstinputlisting[label=debug_cbcmoar, caption=CbCMoarVMのバイトコードのトレース]{./src/trace_cbc.txt} |
389 | |
390 オリジナル版では実際に実行する命令処理はラベルに変換されてしまう為名前をデバッガ上では出力できないが,CbCでは出力する事が可能である. | |
388 CbCとオリジナルのCODES,LABELの添字は対応している為,ログの解析を行う際はそれぞれの添字を抽出し違いが発生している箇所を探索する. | 391 CbCとオリジナルのCODES,LABELの添字は対応している為,ログの解析を行う際はそれぞれの添字を抽出し違いが発生している箇所を探索する. |
389 これらはscriptコマンドが作成したログを元に異なる箇所を発見するスクリプトを用意し自動化する. | 392 これらはscriptコマンドが作成したログを元に異なる箇所を発見するスクリプトを用意し自動化する. |
390 \lstinputlisting[label=logs2, caption=バイトコードの差分検知の一部分]{./src/logs2.txt} | 393 \lstinputlisting[label=logs2, caption=バイトコードの差分検知の一部分]{./src/logs2.txt} |
391 | 394 |
392 違いが生じている箇所が発見できた場合,その前後のCodeSegment及びディスパッチ部分にbreak pointをかけ,それぞれの変数の挙動を比較する. | 395 違いが生じている箇所が発見できた場合,その前後のCodeSegment及びディスパッチ部分にbreak pointをかけ,それぞれの変数の挙動を比較する. |