2014-06-23 5 views
0

그래서 gdb로 디버깅해야하는 숙제에 대한 코드가 있습니다. 나는 문제를 발견하지만 문제의 해결책이 것을 알고gdb에서 값을 변경하는 방법

#define ARRAYSIZE 12 
for (i = ARRAYSIZE - 2; i > 0; i--) { 
    for (j = i; j < ARRAYSIZE - 1; j++) { 

을 변경하는 GDB를 사용하는 방법을 알고하지 않습니다

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를 사용하여 시도했지만 결과는 동일합니다.

+0

원본 파일 대신'gdb'에서 소스 코드를 변경하려는 이유는 무엇입니까? – merlin2011

+0

@ merlin2011 숙제는 gdb로 코드를 디버깅하는 법을 배우는 것입니다. 그들은 우리가 gdb를 독점적으로 사용하고 실제 코드를 건드리지 않기를 원합니다. – user2923535

+0

'gdb'는 * 버그 수정이 아닌 버그를 찾는 데 사용됩니다 ... – merlin2011

답변

2

귀하의 문제는 i = ARRAYSIZE - 2 for 루프의 일부가 아직 실행되지 않았습니다. 그래서

당신이 12-i을 설정하는 및 실행있어 다음 일이 설정 i = ARRAYSIZE - 2입니다 i 10

내가 for 루프의 다른 exprssions를 단계별로 어떤 쉬운 방법을 모르는

하지만, 예를 들어 i을 변경할 수 있습니다. set var i = 10 다음 소스 코드 라인에 도달하면

관련 문제