.mjt/nmosh/bootstrap-vanilla-mosh .mjt/nmosh/minidebugger
デバッガの起動フロー †
- 例外が発生する
- nmoshのraiseが呼ばれる(標準のraiseではなく、nmosh側でoverrideしている) http://github.com/okuoku/mosh/blob/4ebf3264e34ffc38d85ac1af80d28ccbf973f891/boot/runtimes/srfi-mosh/mosh-exceptions.scm#L8
- overrideされたraiseは%nmosh-failprocが存在すれば%get-stack-trace-objを呼び出してスタックトレースオブエジェクトを取得し、%nmosh-failprocに渡す。何らかの理由で%nmosh-failprocが存在しない場合は異常終了する。
- %nmosh-failprocは(nmosh startup)に存在し、(nmosh debugger)ライブラリを呼び出す http://github.com/okuoku/mosh/blob/4ebf3264e34ffc38d85ac1af80d28ccbf973f891/boot/runtimes/srfi-mosh/lib.boot/nmosh/startup.nmosh.ss#L28
- (nmosh debugger)ライブラリが存在しないなら、minidebugを起動し、スタックトレースを表示する.mjt/nmosh/minidebugger http://github.com/okuoku/mosh/blob/4ebf3264e34ffc38d85ac1af80d28ccbf973f891/boot/runtimes/srfi-mosh/lib.boot/nmosh/minidebug.nmosh.ss
- minidebugはキャッシュレィデクトリからシンボルファイルを読み取り、シンボルを解決して表示する。
環境変数やオプションの指定で、例外時にREPLに戻れるようにする予定。
デバッグシンボルの生成 †
expander.scmのグローバル変数*DBG?*で制御する。
gitオブジェクト名の取得 †
デバッグシンボルファイル †
→ .mjt/nmosh/ファイル形式