클래스 A의 메서드 MA()에서 개체 생성 후 클래스 B의 메서드 MB()가 호출되고 있다고 가정합니다. MB()에서 클래스의 이름과 C++에서 호출되는 메서드를 알 수있는 방법이 있습니까 ??C++에서 객체 메소드가 호출되는 클래스의 이름을 아는 방법이 있습니까?
2
A
답변
3
당신이 말하는 것은 Stack Trace입니다.
스택 추적 정의 :
스택 추적은 일반적으로 예외가 가 발생했을 때의 을 활용할 수 있습니다 유용한 디버깅 도구입니다. 현재 현재 실행 스레드의 실행 기록에 정보를 제공하며 의 클래스와 메소드를 내에 표시하고 해당 예외가 발생한 시점을 이라고합니다.
다음 질문에 대한 답변은 "How can one grab a stack trace in C?"입니다.
1
으로 일 것보다 간단하고 일반적인 방법은 다음과 같습니다
A) 예를 들어, 특정 환경 변수 (런타임 조건에 따라 추적 출력을 사용)/디버그 스위치
b)는 엔트리를 기록하고 스레드 ID와 함께 각 함수를 종료합니다 (다중 스레드 응용 프로그램을 처리하기 위해). 이를 위해 __FILE__ and __LINE__
사전 처리기 지시어를 사용하십시오.
C) 좋은있는 LogViewer 응용 프로그램 (Windows의 예 DebugView와) 이것에 대한
관련 문제
- 1. C에서 연결된 데이터베이스의 테이블 이름을 아는 법 #
- 2. 함수 메소드의 데코레이터에서 클래스의 이름을 아는 법?
- 3. EJB 수명주기 메소드가 호출되는 방법
- 4. 객체의 클래스 이름을 아는 경우 객체 생성 문제
- 5. PL/PgSQL에서 호출하는 함수의 이름을 아는 방법이 있습니까?
- 6. 각 메소드가 호출되는 이유는 무엇입니까?
- 7. Java Vector 클래스의 어떤 메소드가 동기화되어 있습니까?
- 8. 이 메소드가 두 번 호출되는 이유는 무엇입니까?
- 9. 웹에서 사용할 글꼴을 아는 방법이 있습니까?
- 10. 개체가 C에서 명시 적으로 ToString을 구현했는지 알 수있는 방법이 있습니까?
- 11. Java 객체 메소드가 작동하지 않습니다.
- 12. C에서 .NET 객체 작성하기?
- 13. 클래스의 이름을 동적으로 설정할 수 있습니까?
- 14. Sytem.Threading.Task의 이름을 설정하는 방법이 있습니까?
- 15. C에서 클래스의 일반적인 호출 #
- 16. WCF 서비스를받는 방법은 호출되는 호스트 이름을 참조하십시오.
- 17. 객체 클래스의 메소드에서 객체를 해제 할 수 있습니까?
- 18. 슈퍼 클래스의 메서드가 서브 클래스의 메서드 대신 호출되는 이유는 무엇입니까?
- 19. 문자열에서 객체 이름을 만드십시오.
- 20. Imager 클래스의 scaleX 메소드가 실패하는 원인은 무엇입니까?
- 21. 클래스의 소멸자가 두 번 호출되는 이유는 무엇입니까?
- 22. 상속 클래스의 이름을 얻는다
- 23. oracle10g에서 다른 사용자의 이름을 아는 방법은 무엇입니까?
- 24. 응용 프로그램의 서비스 이름을 아는 방법은 무엇입니까?
- 25. 런타임에 어떤 클래스의`main` 메소드가 호출되었는지 어떻게 알 수 있습니까?
- 26. C에서 여러 문자로 문자열을 분할하는 방법이 있습니까?
- 27. C에서 GIF/JPEG를 "읽는"방법이 있습니까
- 28. C에서 변수/포인터의 유형을 출력하는 방법이 있습니까?
- 29. c에서 crypt()를 뒤집을 방법이 있습니까?
- 30. 다른 클래스의 Dealloc 객체
하나를 사용하여 로그를 분석하지만, C++ 스택 검사 메커니즘의 휴대용 구할 수에 대한 어떤 기능을 제공하거나 보장하지 않는다는 것을 주목할 필요가 –
@ 토니 : 설명 주셔서 감사합니다. –
아마 심벌 정보가있는 빌드에서만 그렇게 단순하게 작동합니다. 기호 정보가없는 릴리스 빌드 인 경우 더 많은 노력이 필요합니다. – Chubsdad