while

指定した式がゼロでなければコマンドリストを実行します。

構文

GDB モード:

while expr
commands  
end

IDB モード:

while expr "{" commands "}"

パラメーター

expr

while-loop を制御する条件式。

commands

実行される 1 つまたは複数のデバッガーコマンドあるいはプログラム的な式。

GDB モード:

1 行につき 1 コマンドを入力します。

IDB モード:

セミコロン (;) でコマンドを区切ります。

説明

デバッガーは、expr が非ゼロの値に評価される限り、cmdlist のコマンドを実行します。

これは、現在の言語に従って行う true または false のテストとは異なります。例えば、現在の言語が Fortran で式が 2 を評価した場合、Fortran では 2 は .FALSE. ですが、2 は非ゼロのため、while は続けられます。

while コマンドの本文に continue コマンド、step コマンド、next コマンドを配置することはできますが、これは混乱を招く恐れがあるので注意してください。例えば、while コマンドの本文内でアプリケーション実行の継続中にブレークポイントがトリガーされることがあります。

GDB モード:このコマンドは、コマンドライン・モードでデバッガーを使用する場合のみ適用されます。GUI の [Console (コンソール)] ウィンドウを使用する場合は効果はありません。 

GDB モード:

(idb) 
					 set $loop = 5  
(idb) 
					 while $loop > 0  
 >output "$loop is "
 >output $loop
 >echo \n
 >set $loop = $loop - 1
 >end
$loop is 5 
$loop is 4 
$loop is 3 
$loop is 2 
$loop is 1 

IDB モード:

(idb) 
					 while $loop > 0 { p $loop; set $loop = $loop - 1}
5
4
3
2
1
(idb)

次の例は、while の本文内でアプリケーション実行の継続が含まれる、より複雑な while コマンドの使用方法を示しています。

IDB モード:

(idb) 
					 run
The list is:
[1] stopped at [void List<Node>::print(void) const:167 0x0804af2e]
167 cout << "Node " << i ;
(idb)
(idb) 
					 while (currentNode->_data != 5) { print "currentNode->_data is ",
currentNode->_data; cont }  
currentNode->_data is 1
Node 1 type is integer, value is 1
[1] stopped at [void List<Node>::print(void) const:167 0x0804af2e]
167 cout << "Node " << i ;
currentNode->_data is 2
Node 2 type is compound, value is 12.345
parent type is integer, value is 2
[1] stopped at [void List<Node>::print(void) const:167 0x0804af2e]
167 cout << "Node " << i ;
currentNode->_data is 7
Node 3 type is compound, value is 3.1415
parent type is integer, value is 7
[1] stopped at [void List<Node>::print(void) const:167 0x0804af2e]
167 cout << "Node " << i ;
currentNode->_data is 3
Node 4 type is integer, value is 3
[1] stopped at [void List<Node>::print(void) const:167 0x0804af2e]
167 cout << "Node " << i ;
currentNode->_data is 4
Node 5 type is integer, value is 4
[1] stopped at [void List<Node>::print(void) const:167 0x0804af2e]
167 cout << "Node " << i ;
(idb)
(idb) 
					 print currentNode->_data
5

このヘルプトピックについてのフィードバックを送信