DOS _EXEC
の呼び出し情報をコンソールに表示、またはファイルに記録する常駐プログラムです。
過去にchkexec.rとして作成したツールをexectraceという名称に変更したものです。
無保証につき各自の責任で使用して下さい。
オプションを付けずに実行すれば常駐します。
以後、DOS _EXEC
が呼び出されるたびに、引数と返値をコンソールに出力します。
IOCSを使っているので、シェルによる標準出力のリダイレクトには影響されません。
ファイル名を指定して実行した場合、コンソールではなく指定したファイルに出力します。
例: exectrace foo.log
-r
オプションを指定して実行すれば常駐を解除します。
例: exectrace -r
- MD ...
DOS _EXEC
の動作モードです。機能名が丸括弧内に表示されます。 - FILE ... 実行ファイル名です。MD = 5 の場合はオーバレイXファイルを指します。
- CMDLINE ... コマンドラインです。MD = 4 では引数にコマンドラインは指定しませんが、 表示された方が便利なこともあるのでPSPを参照して表示するようにしてあります。
- ENV ... 環境変数領域のアドレスです。
- BUFFER ... 検索した実行ファイル名を格納するバッファです(MD = 2 のみ)。
- LOAD ... 実行ファイルをロードする先頭アドレスです(MD = 3 のみ)。
- LIMIT ... 実行ファイルをロードするときのリミットアドレスです(MD = 3 のみ)。
- ADDRESS ... ロード済みのファイルを実行するときのアドレスです(MD = 4 のみ)。
- TARGET ... オーバレイXファイル内の実行ファイル名です(MD = 5 のみ)。
- RET ...
DOS _EXEC
の返値です。MD によって意味が違います。- MD = 0、1、4 ... 子プロセスの実行開始アドレス
- MD = 2 ... エラーコード
- MD = 3 ... プログラムの長さ
- MD = 5 ... モジュール番号×256 いずれも負数ならエラーです。
なお、子プロセスを起動するDOSコールはコール内で子プロセスに処理が移行するのではなく、 DOSコールが終了して例外処理から戻ったときに移行するという仕組みになっています。 しかしこのプログラムはDOSコールを単純にフックしているだけなので、ここで表示される値は 子プロセスの終了コードではなく、DOSコールが成功したかどうかのフラグとなっています (負数でなけければ実行開始アドレス)。
子プロセスの終了コードを得る必要がある場合は、traceを使用して下さい。
PCやネット上での取り扱いを用意にするために、src/内のファイルはUTF-8で記述されています。 X680x0上でビルドする際には、UTF-8からShift_JISへの変換が必要です。
あらかじめ、u8tosjをインストールしておいてください。
トップディレクトリでmake
を実行してください。以下の処理が行われます。
build/
ディレクトリの作成。src/
内のファイルをShift_JISに変換してbuild/
へ保存。
次に、カレントディレクトリをbuild/
に変更し、make
を実行してください。
実行ファイルが作成されます。
src/
内のファイルを適当なツールで適宜Shift_JISに変換してからmake
を実行してください。
UTF-8のままでは正しくビルドできませんので注意してください。
GNU GENERAL PUBLIC LICENSE Version 3 or later.
TcbnErik / 立花@桑島技研
https://github.com/kg68k/exectrace