2012-04-30 5 views
0

다른 행에 return 수있는 긴 C 함수가 있습니다. 함수를 통해 GDB를 실행하고 어떤 라인에 함수를 출력 할 수 있습니까? return ed? 지금까지 나는 한 번에 한 줄씩 (n을 사용하여) 가고 있었고, 이것은 지루해졌습니다.신속하게 함수 반환 위치를 결정하십시오.

동적으로 GDB를 사용하여 함수를 호출하고 반환 된 행을 알 수 있습니까?

+0

모든 return 문에 중단 점을 추가하십시오. 필자는 보통 사용자가 설명하는 것과 같은 문제를 디버깅 할 목적으로 함수 규칙 당 하나의 return 문을 정확히 따르려고합니다. –

+0

정확히 일치하는 중복이 있습니다 : http://stackoverflow.com/questions/3649468/setting-breakpoint-in-gdb-where-the-function-returns 그 질문은 좋은 대답을 가지고 있습니다 : http://stackoverflow.com/a/3649698/16509 – jjrv

+0

@jjrv : 고맙지 만 임베디드 장치로 작업하고 있으므로'reverse-step '이 없습니다. – Randomblue

답변

3

당신은 GCC로 컴파일하고 있고 코드가 매크로를하고 검색 + 편집기에있는 모든 수익을 대체하는 것입니다 편집 할 수있는 경우 하나의 더러운 트릭 ...

int global_return_lineno; 
#define return2(x) {global_return_lineno=__LINE__;return(x);} 

그런 다음 함수를 호출 전역 변수를 검사하십시오.

+0

+1 항상 디버깅 단계에서이 작업을 수행하십시오. –