当我输入"n"时,gdb将忽略第35行以下的所有行,并跳到上一行。
我已经通过添加-O0关闭了优化,但问题仍然存在。
Breakpoint 1, other_MAIT_create (max_deno=10, MAIT_node=0x7fffffffdad0, nume=9, deno=1024, output_site=0x7fffffffdb10,
parent=0x7fffffffdaf0, MAIT_sign=3, save_num=0x7fffffffdab4) at create.cpp:33
33 clean_sign(MAIT_node);
(gdb) n
35 for(unsigned int i=max_deno-1;i>-1;i--)
(gdb) n
8 two_d_node node_split;
(gdb) n
7 node split_single;
(gdb) n
6 infor split_temp;
(gdb) n
93 }
(gdb) n
main (argc=1, argv=0x7fffffffdc98) at main.cpp:32
32 for(unsigned int i=2;i<number;i++)
max_deno=10
这看起来像是gdb在调用堆栈上对象的析构函数之前停止。
顺便说一下,只要i
是unsigned int
,i>-1
就永远不可能是真的。也就是说,期望gdb向前移动到for
循环的循环体是错误的,我们在您的文章中看到了它的第一行。