行指向デバッガは、 MS-DOSおよび互換性のあるオペレーティングシステム、OS/2 、およびWindowsの 16 ビット版と 32 ビット版のDEBUG.EXE外部コマンドです。[ 1 ]
DEBUGは、アセンブラ、逆アセンブラ、または16進ダンププログラムとして機能し、ユーザーがメモリの内容を対話的に(アセンブリ言語、16進数、またはASCIIで)調べたり、変更を加えたり、COM、EXE 、およびその他のファイルタイプを選択的に実行したりすることを可能にします。また、特定のディスクセクター、I/Oポート、およびメモリ アドレスにアクセスするために使用されるいくつかのサブコマンドも備えています。

DEBUG.COMIBM PC DOS 1.0では、(他のコマンドに加えて)
DEBUG.EXEコマンド従来、すべてのコンピュータとオペレーティングシステムには、プログラムが正しく動作しているかどうかを判断するために使用されるメンテナンス機能が含まれていました。DEBUGは、もともと86-DOSでこの目的を果たすためにTim Patersonによって作成されました。Paterson が 1980 年代初頭に Microsoft で働き始めたとき、彼はこのプログラムを持ち込みました。DEBUG はDOS 1.00の一部であり、 MS-DOS / PC DOSおよび特定のバージョンのMicrosoft Windowsに含まれています。元々は という名前でしたが、MS-DOS 3.2 で に名前が変更されました。[ 2 ]DEBUG.COMDEBUG.EXE
Windows XP以降のバージョンには、MS-DOSサブシステムDEBUGにMS-DOSとの互換性を維持するために、16ビットDOSコマンドが含まれています。16ビットDOSコマンドは、Windowsの64ビット版では使用できません。[ 3 ]
MS-DOS/PC DOSのデバッグ機能にはいくつかの制限があります。
拡張された DEBUG パッケージには、Novell DOS 7、OpenDOS 7.01、およびDR-DOS 7.02以降の DEBUG コマンドが含まれています。これは、以前のバージョンのDR DOSに付属していたDigital Researchの旧シンボリック命令デバッガSID/SID86 [ 4 ]の再実装です。[ 5 ] [ 6 ] [ 7 ]これは、MS-DOS/PC DOS の DEBUG コマンドライン構文と完全に互換性がありますが、 Pentiumまでの 16 ビットおよび 32 ビットのオペコードのサポート、数十の追加コマンドとサブモードを備えた拡張モード (/X)、ユーザー定義可能なマクロを備えた大幅に強化されたコマンドライン構文、名前付きレジスタ、ロードされたシンボル テーブル、数学演算、および基数変換を備えたシンボリック デバッグ機能、コメント付き逆アセンブラなど、多くの機能強化が提供されています。[ 8 ] [ 7 ]一部のバージョンでは、DPMS を「ステルスモード」の保護モードデバッガとして利用することもあった。[ 9 ]
DEBUGのFreeDOS版はPaul Vojtaによって開発され、MITライセンスの下でライセンスされています。[ 10 ]
32 ビットDPMIプログラムをサポートする 32 ビット版クローン「DEBUGX」も存在する。[ 11 ] HX DOS エクステンダーの作者である Andreas "Japheth" Grech は、拡張版 DEBUG バージョン 0.98 から 1.25 を開発し、元PC DOS開発者の Vernon C. Brooks はバージョン 1.26 から 1.32 を追加した。[ 12 ]
デバッグ [[ドライブ:][パス] ファイル名 [パラメータ]]
DEBUG をパラメータなしで起動すると、DEBUG プロンプトに "-" が表示されます。ユーザーは、アセンブラ モードに入るための "A"、16 進ダンプを実行するための "D"、トレースを実行するための "T"、メモリ内のプログラムを逆アセンブル (逆アセンブル) するための "U" など、 1 文字または 2文字のサブコマンドのいずれかを入力できます。[ 13 ] DEBUG は、次の構文を使用して「DEBUG スクリプト」インタープリタ としても使用できます。
デバッグ<ファイル名スクリプト ファイルには、DEBUG サブコマンドとアセンブリ言語命令が含まれる場合があります。[ 14 ]この方法は、バッチ ファイルからバイナリ ファイルを作成または編集するために使用できます。[ 2 ]
以下は、MS-DOS 6.22 の DEBUG.EXE からコマンド経由で使用できる DEBUG コマンドの一覧です?。
A [アドレス]を組み立てる C言語の範囲アドレスを比較する ダンプ D [範囲] Eアドレスを入力してください[リスト] F範囲リストを埋める go G [=アドレス] [アドレス] 16進数 H 値1 値2 入力Iポート ロード L [アドレス] [ドライブ] [最初のセクター] [番号] M範囲アドレスを移動 名前 N [パス名] [引数リスト] 出力Oポートバイト 進行 P [=住所] [番号] Qを終了する レジスタR [レジスタ] 検索範囲リスト トレースT [=アドレス] [値] Uを分解する[範囲] W [アドレス] [ドライブ] [最初のセクター] [番号] と書き込む 拡張メモリXAを割り当てる[#ページ] 拡張メモリの解放 XD [ハンドル] 拡張メモリページをマップする XM [Lpage] [Ppage] [handle] 拡張メモリの状態を表示する XS
Rコマンドは、現在のレジスタの状態と値を表示します。
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=2A63 ES=2A63 SS=2A63 CS=2A63 IP=0100 NV UP EI PL NZ NA PO NC 2A63:0100 0F DB 0F
D は現在のメモリをダンプし、16 進数と ASCII 値の両方を表示します。
2A63:0100 0F 00 B9 8A FF F3 AE 47-61 03 1F 8B C3 48 12 B1 ......ガ....H.. 2A63:0110 04 8B C6 F7 0A 0A D0 D3-48 DA 2B D0 34 00 52 2A ........H.+.4.R\* 2A63:0120 00 DB D2 D3 E0 03 F0 8E-DA 8B C7 16 C2 B6 01 16 ... 2A63:0130 C0 16 F8 8E C2 AC 8A D0-00 00 4E AD 8B C8 46 8A ..........N...F. 2A63:0140 C2 24 FE 3C B0 75 05 AC-F3 AA A0 0A EB 06 3C B2 .$.<.u....<. 2A63:0150 75 6D 6D 13 A8 01 50 14-74 B1 BE 32 01 8D 8B 1E うーん...Pt.2.... 2A63:0160 8E FC 12 A8 33 D2 29 E3-13 8B C2 03 C3 69 02 00 ....3.)......i.. 2A63:0170 0B F8 83 FF FF 74 11 26-01 1D E2 F3 81 00 94 FA .....t.&.....
そして、U nassemble は同じメモリの逆アセンブルの試みを表示します。
2A63:0100 0F DB 0F 2A63:0101 00B98AFF ADD [BX+DI+FF8A]、BH 2A63:0105 F3 REPZ 2A63:0106 AE SCASB 2A63:0107 47 INC DI 2A63:0108 61 DB 61 2A63:0109 031F ADD BX,[BX] 2A63:010B 8BC3 MOV AX,BX 2A63:010D 48 DEC AX 2A63:010E 12B1048B ADC DH、[BX+DI+8B04] 2A63:0112 C6F70A MOV BH,0A 2A63:0115 0AD0 OR DL,AL 2A63:0117 D348DA ROR WORD PTR [BX+SI-26],CL 2A63:011A 2BD0 SUB DX,AX 2A63:011C 3400 XOR AL,00 2A63:011E 52 PUSH DX 2A63:011F 2A00 SUB AL,[BX+SI]
DEBUGユーティリティは、DOS以外のソフトウェアが一切インストールされていない環境でバイナリファイルを編集する際に役立ちます。また、ディスクセクターの編集にも使用でき、これはブートセクターウイルスを除去する方法の一つです。
DEBUG コマンドの技術文書は MS-DOS 3.3 のリリースで削除されましたが、 EXE2BINとは異なり、このコマンドは標準配布物に残されました。[ 15 ]
Intel ISIS-II [ 16 ]およびiRMX 86 [ 17 ]、DEC TOPS-10 [ 18 ]およびTOPS-20 [ 19 ]、THEOS/OASIS [ 20 ]、Zilog Z80-RIO [ 21 ]、Stratus OpenVOS [ 22 ]、PC-MOS [ 23 ]およびAROS [ 24 ]のオペレーティングシステムもコマンドを提供します。DEBUG
{{cite book}}:|work=無視されました (ヘルプ) (注: DR-DOS DEBUG.EXE の前身であるシンボリック命令デバッガ ( DR DOS 3.41の SID86.EXE および DR DOS 5.0/6.0 の SID.EXE) に関する情報が含まれています。)[…]
DR-DOS 7.03
DEBUG はまだ古い SID86.EXE に基づいているため、DEBUG 1.51 を実行し、デバッグ
プロンプトから ?? を入力して拡張ヘルプシステムに入ることをお勧めします。これにより、構文と機能に関するヘルプが満載の 8 画面が表示されます。これらの機能の一部は、以前のバージョンでもサポートされていました。 […]
{{cite book}}:|work=無視されました (ヘルプ) (注: NWDOSTIP.TXT はNovell DOS 7およびOpenDOS 7.01に関する包括的な資料であり、多くの未公開機能や内部構造の説明が含まれています。これは、著者が 2001 年まで維持し、当時多くのサイトで配布していた、さらに大規模な MPDOSTIP.ZIP コレクションの一部です。提供されているリンクは、NWDOSTIP.TXT ファイルの HTML 変換された古いバージョンを指しています。){{cite book}}:|work=無視されました (ヘルプ)