所以我有这个家庭作业的代码,我必须用gdb调试。我发现了问题,但不知道如何使用gdb来改变它
#define ARRAYSIZE 12
for (i = ARRAYSIZE - 2; i > 0; i--) {
for (j = i; j < ARRAYSIZE - 1; j++) {
我知道问题的解决方案是:
for (i = ARRAYSIZE; i > 0; i--) {
for (j = i-1; j < ARRAYSIZE - 1; j++) {
但不知道如何更改for循环中的参数。我已经尝试过这种方式,但它不起作用:
81 for (i = ARRAYSIZE - 2; i > 0; i--) {
(gdb) set var i=12
(gdb) p i
$1 = 12
(gdb) n
82 for (j = i; j < ARRAYSIZE - 1; j++) {
(gdb) set var j=i-1
(gdb) p j
$2 = 9
(gdb) p i
$3 = 10
我还尝试使用print i=12
和print j=i-1
更改值,但结果相同。
答案 0 :(得分:2)
您的问题是for循环的i = ARRAYSIZE - 2
部分尚未执行。
因此,您要将i
设置为12
,然后执行的下一件事是将i = ARRAYSIZE - 2
设置为i
。
我不知道如何简单地逐步完成for循环的不同exprssions,但您可以更改i
,例如到达下一个源代码行后set var i = 10
。