내가 원했던 것은 Doxygen과 같은 정적 코드 분석과 GDB를 사용할 때 볼 수있는 스택 프레임에서 얻을 수있는 것을 섞은 것이다. 내가 디버깅하는 문제가있는 함수를 알고이 함수 호출에 대한 실행을 안내 한 함수 호출의 이웃을보고 싶습니다. 예를 들어, 간단한 HelloWorld를 실행하십시오! 것 출력과 같은 : 다음Linux에서 C++ 프로그램에서 호출 된 함수의 인쇄를 얻으려면 어떻게해야합니까?
main:
Greeter::Greeter()
Greeter::printHello()
Greeter::printWorld()
주요 기능에서 생성자가 호출 된 것을 나타내는
와라는 printHello 및 printWorld 기능을합니다. GDB에서 printWorld에서 깨진 경우 printHello가 호출 된 스택 프레임을 볼 수 없습니다.
무수한 소스 파일에 로그 메시지를 삽입하지 않고도 함수 호출을 추적하는 방법에 대한 아이디어가 있습니까?
감사합니다.
어떤 상황에서이 작업을 수행 할 수 있기를 원하십니까? 만약 당신이 GDB에 있다면, 당신은'역 추적 (backtrace) '을 가지고 있습니다 ... 당신은 무엇을 원합니까? –
함수의 호출 전에 수정 된 변수/객체를 파악하기 위해 매우 큰 프로그램에서 함수가 호출 된 컨텍스트를 추적하고 싶습니다. 동일한 프레임 레벨에서 함수 호출이 누락 될 수는 있지만 함수 호출 전에는 일어 났으므로 스택 추적만으로는 충분하지 않습니다. – tonicebrian
디버거를 사용하여 프로그램을 단계별로 살펴보고 어떤 함수가 호출되었는지 확인할 수 있습니다 ... 또는 함수를 호출하는 함수에 디버그 메시지를 추가하십시오. – smerlin