무한 재귀 엉망으로 깊이 내려간 후 결함을 세분화하는 C 프로그램이 있습니다. 호출 스택 프레임의 깊이 는 1000 프레임 이상 이고 반복되는 함수 호출은 일련의 4 개의 일반적인 재귀 함수 호출이므로 중단 점은 쓸모없는 것처럼 보이기 때문에 GDB에서 프로세스를 역 추적하는 것은 쓸모가 없습니다 . 역 추적에 대한 반복 된 호출은 계속해서 네 가지 함수 이름을 계속해서 읽습니다. 'up' 'up' 'up'...을 사용하면 더 높아질 것이므로이 패턴이 처음 어디서 시작되었는지 알 수 있지만 최상위 통화에서 시작하는 것이 더 효율적인 것처럼 보입니다. 필자의 직감은 프로세스의 초기에 무한 재귀가 시작되기 때문입니다. 콜 스택에 총 N 프레임이 있다면, 내가 할 수 있다는 것을 알고 있습니다.
gdb>> up N
스택의 상단 (N 번째 프레임)에 도달하지만 문제는 N을 모른다는 것입니다. 호출 스택에서 총 프레임 수를 찾는 명령이 있습니까? 아니면 최상위 프레임으로 점프하기위한 매끄러운 내장 GDB 명령이 있습니까? 최상위 프레임이 main () 함수 여야한다는 것이 나에게 일어났습니다. 그 지식을 활용하여 최상위 프레임에 도달 할 수 있습니까?