所以我有这个家庭作业代码,我必须使用 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
and print j=i-1
更改值但结果是相同的。
你的问题是i = ARRAYSIZE - 2
for 循环的一部分尚未执行。
所以你正在设置i
to 12
接下来执行的是i = ARRAYSIZE - 2
设定i
to 10.
我不知道有什么简单的方法来逐步执行 for 循环的不同表达式,但您可以更改i
例如set var i = 10
一旦到达下一个源代码行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)