Skip to content

exectrace is a TSR program that monitors DOS _EXEC

License

Notifications You must be signed in to change notification settings

kg68k/exectrace

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

exectrace

DOS _EXECの呼び出し情報をコンソールに表示、またはファイルに記録する常駐プログラムです。
過去にchkexec.rとして作成したツールをexectraceという名称に変更したものです。

無保証につき各自の責任で使用して下さい。

Usage

常駐方法

オプションを付けずに実行すれば常駐します。 以後、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を使用して下さい。

Build

PCやネット上での取り扱いを用意にするために、src/内のファイルはUTF-8で記述されています。 X680x0上でビルドする際には、UTF-8からShift_JISへの変換が必要です。

u8tosjを使用する方法

あらかじめ、u8tosjをインストールしておいてください。

トップディレクトリでmakeを実行してください。以下の処理が行われます。

  1. build/ディレクトリの作成。
  2. src/内のファイルをShift_JISに変換してbuild/へ保存。

次に、カレントディレクトリをbuild/に変更し、makeを実行してください。 実行ファイルが作成されます。

u8tosjを使用しない方法

src/内のファイルを適当なツールで適宜Shift_JISに変換してからmakeを実行してください。 UTF-8のままでは正しくビルドできませんので注意してください。

License

GNU GENERAL PUBLIC LICENSE Version 3 or later.

Author

TcbnErik / 立花@桑島技研
https://github.com/kg68k/exectrace