アセンブラー命令をステップ実行します。関数呼び出しにはステップインします。
このコマンドは、1 つの機械命令を実行します。命令に関数呼び出しが含まれる場合、コマンドは呼び出される関数にステップインします。
マルチスレッド・アプリケーションでは、stepi コマンドを使用して、ほかのすべてのスレッドを停止させたまま、現在のスレッドを 1 機械命令ずつステップ実行できます。
expr を指定した場合、デバッガーはこの式を、stepi コマンドを実行する回数を指定する正の整数として評価します。expression は、現在のコンテキストで有効な任意の式です。
次の例は、命令 (stepi) ごとのステップ実行を示しています。呼び出しへのステップオーバーについては、next コマンドの例を参照してください。
GDB モード:
(idb) x /8i $pc 0x0804ae6d <append+25>: movlr 0x8(%ebp), %eax 0x0804ae70 <append+28>: movlr (%eax), %eax 0x0804ae72 <append+30>: movl %eax, -16(%ebp) 0x0804ae75 <append+33>: pushl %edi 0x0804ae76 <append+34>: movlr -16(%ebp), %eax 0x0804ae79 <append+37>: movl %eax, (%esp) 0x0804ae7c <append+40>: call 0x08051be2 <getNextNode> 0x0804ae81 <append+45>: addl $0x4, %esp (idb) stepi 0x0804ae70 151 Node* currentNode = _firstNode; (idb) x /1i $pc 0x0804ae70 <append+28>: movlr (%eax), %eax (idb) stepi $count - 1 0x0804ae70 151 Node* currentNode = _firstNode; (idb) x /1i $pc 0x0804ae70 <append+28>: movlr (%eax), %eax (idb) stepi 0x0804ae72 151 Node* currentNode = _firstNode; (idb) x /1i $pc 0x0804ae72 <append+30>: movl %eax, -16(%ebp)
IDB モード:
(idb) $curpc/8i void List<Node>::append(class Node* const): src/x_list.cxx *[line 151, 0x0804ae6d] append(class Node* const)+0x19: movlr 0x8(%ebp), %eax [line 151, 0x0804ae70] append(class Node* const)+0x1c: movlr (%eax), %eax [line 151, 0x0804ae72] append(class Node* const)+0x1e: movl %eax, -16(%ebp) [line 152, 0x0804ae75] append(class Node* const)+0x21: pushl %edi [line 152, 0x0804ae76] append(class Node* const)+0x22: movlr -16(%ebp), %eax [line 152, 0x0804ae79] append(class Node* const)+0x25: movl %eax, (%esp) [line 152, 0x0804ae7c] append(class Node* const)+0x28: call getNextNode [line 152, 0x0804ae81] append(class Node* const)+0x2d: addl $0x4, %esp (idb) stepi stopped at [void List<Node>::append(class Node* const):151 0x0804ae70] append(class Node* const)+0x1c: movlr (%eax), %eax (idb) stepi $count - 1 stopped at [void List<Node>::append(class Node* const):151 0x0804ae70] append(class Node* const)+0x1c: movlr (%eax), %eax (idb) stepi stopped at [void List<Node>::append(class Node* const):151 0x0804ae72] append(class Node* const)+0x1e: movl %eax, -16(%ebp)