デバッガーの動作をファイルに記録します。
このコマンドは、デバッガーの入力、出力、またはその両方を記録します。
コマンドファイルを作成したり、前に起こったことを参照できるように、入力と出力の両方がファイルに書き込まれます。
record input コマンドは、デバッガーコマンドをファイルに保存します。source コマンドまたは playback input コマンドを使用して、ファイル中のコマンドを実行することができます。
ファイル名が指定されていない場合、デバッガーは記録ファイルをランダムな名前で /tmp に作成します。デバッガーは、そのファイル名を通知するメッセージを発行します。
record output コマンドは、デバッガー出力をファイルに保存します。出力は同時に stdout (標準出力) または stderr (エラーメッセージ) にも書き込まれます。
デバッガーの入力または出力の記録を停止するには、適切なバージョンの unrecord コマンドを使用してデバッガーを終了するか、次のようにコマンドを /dev/null にリダリレクトします。
(idb) record input /dev/null (idb) record output /dev/null (idb) record io /dev/null
record io コマンドは、デバッガーへの入力とデバッガーからの出力の両方を保存します。このコマンドの起動時にデバッガーがすでに入力または出力を記録中である場合、デバッガーは古いファイルを閉じて、新しいファイルに記録します。同時に 2 つのファイルには記録しません。
record io は record input と record output の組み合わせに相当し、開かれている記録ファイルは閉じられます。
record io コマンドのみがプロンプト自体を記録します。
次の例は、record input コマンドを使用して、一連のデバッガーコマンドを myscript という名前のファイルに記録する方法を示しています。
(idb) record input myscript (idb) stop in main [#1: stop in int main(void)] (idb) run [1] stopped at [int main(void):182 0x08051603] 182 List<Node> nodeList; (idb) unrecord input myscript に入力が記録されます。 (idb) sh cat myscript stop in main run unrecord input
次の例は、record output コマンドを使用して、一連のデバッガーコマンドを myscript という名前のファイルに記録する方法を示しています。
(idb) record output myscript (idb) stop in List<Node>::append [#2: stop in void List<Node>::append(class Node* const)] (idb) cont [2] stopped at [void List<Node>::append(class Node* const):148 0x0804ae5a] 148 if (!_firstNode) (idb) cont to 156 stopped at [void List<Node>::append(class Node* const):156 0x0804aed7] 156 } (idb) unrecord output
上記のコマンドで記録された myscript の内容は次のとおりです。
(idb) sh cat myscript [#2: stop in void List<Node>::append(class Node* const)] [2] stopped at [void List<Node>::append(class Node* const):148 0x0804ae5a] 148 if (!_firstNode) stopped at [void List<Node>::append(class Node* const):156 0x0804aed7] 156 }
次の例は、record io により入力と出力が記録される方法を示しています。
(idb) record io myscript (idb) stop in main [#1: stop in int main(void) ] (idb) run [1] stopped at [int main(void):12 0x120001130] 12 int i; (idb) quit % cat myscript (idb) stop in main [#1: stop in int main(void) ] (idb) run [1] stopped at [int main(void):12 0x120001130] 12 int i; (idb) quit