gdb命令文件错误“while类型组合”在while循环中

时间:2014-01-30 17:51:00

标签: scripting while-loop gdb

我在gdb命令文件中写了以下命令。

while ($i < 3)
s
end

我收到错误:Invalid type combination in ordering comparison.

然后我尝试了以下内容:

while (((int) $i) < ((int) 3))
s
end

但后来我收到了错误:Invalid cast.

如何在gdb命令文件中编写循环?

注意:i是我正在调试的C程序中的变量,在命令文件中称为$ i。

我找不到任何示例at this site,它提供了一些关于gdb的参考资料。

1 个答案:

答案 0 :(得分:1)

首先,我认为使用

更合适
watch  i >= 3

当我变得超过2时,为了打破。

至于循环,直到C中的局部变量小于3.这是一个gdb脚本:

  while (i < 3) 
    s
  end

这用C ++代码来演示gdb循环:

#include <stdio.h>

int main()
{
  for (int i=0; i< 10; ++i) {
    printf ("i: %d\n", i);
  }
  return 0;
}

这是一个gdb测试:

D:\>gdb -q a
Reading symbols from D:\a.exe...done.
(gdb) start
Temporary breakpoint 1 at 0x401395: file main.cpp, line 4.
Starting program: D:\a.exe
[New Thread 3780.0x144]

Temporary breakpoint 1, main () at main.cpp:4
4       {
(gdb) n
5         for (int i=0; i< 10; ++i) {
(gdb)
6           printf ("i: %d\n", i);
(gdb) while (i<3)
 >s
 >end
i: 0
5         for (int i=0; i< 10; ++i) {
6           printf ("i: %d\n", i);
i: 1
5         for (int i=0; i< 10; ++i) {
6           printf ("i: %d\n", i);
i: 2
5         for (int i=0; i< 10; ++i) {
6           printf ("i: %d\n", i);
(gdb) p i
$1 = 3
(gdb)