我在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的参考资料。
答案 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)