如何更改gdb中的值

时间:2014-06-23 20:23:29

标签: c gdb

所以我有这个家庭作业的代码,我必须用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=12print j=i-1更改值,但结果相同。

1 个答案:

答案 0 :(得分:2)

您的问题是for循环的i = ARRAYSIZE - 2部分尚未执行。

因此,您要将i设置为12,然后执行的下一件事是将i = ARRAYSIZE - 2设置为i

我不知道如何简单地逐步完成for循环的不同exprssions,但您可以更改i,例如到达下一个源代码行后set var i = 10