아무도 나에게 코드의 호출 트리를 작성하는 방법을 안내해 줄 수있는 사람이 하나 있다면 func_tree를 사용했지만 매크로 함수 호출 및 함수를 매크로 아래에 표시하지 않습니다 ... ?파일에 C 코드의 함수 호출 트리를 덤프하는 방법은 무엇입니까?
0
A
답변
0
코드를 컴파일하기 바로 전에 C 사전 처리기가 모든 매크로를 확장합니다. 이것은 심지어 컴파일러가 매크로 정의를 보지 못한다는 것을 의미합니다. 불행하게도 함수 호출 추적에 매크로를 포함시킬 가능성이 없음을 의미합니다.
런타임 환경을 얼마나 잘 알고 있느냐에 따라 스택 추적 프레임이 스택의 현재 위치에있는 곳을 백 계산할 수있는 경우가 있습니다. 불행히도 정확한 세부 정보가 한 환경에서만 작동하는 경우가 종종 있습니다. 각 환경에 대해 스택 의미의 발견을 다시 수행해야합니다. Here is project that performs such a technique하지만 매우 유용 할 지 알 수는 없습니다.
컴파일러가 해당 기능 코드를 호출 블록에 배치 할 때 함수 호출이 존재하지 않도록 다시 작성되므로이 기술은 컴파일러 인라인을 표시하지 않을 수도 있습니다.
특정 환경에 대해 Google과 유사한 프로젝트를 찾을 수 없다면 직접 작성해야 할 가능성이 있습니다. 이것이 너머에 있다면 환경의 저수준 세부 정보를 학습 할 가치가 있는지 또는 더 강력한 로깅을 수행하는 것이 더 나은지 조사해야합니다.
관련 문제
- 1. 기능을 덤프하는 방법은 무엇입니까?
- 2. 네이티브 코드의 NDK 호출 함수
- 3. 자바에서 파일에 b + 트리를 저장하는 방법은 무엇입니까?
- 4. 전체 HKLM 레지스트리 트리를 콘솔에 덤프하는 C# 프로그램?
- 5. C++ : 함수 호출 트리 생성
- 6. 파일에 이진 트리를 저장하려면
- 7. C/C++ 함수 호출
- 8. .js 파일에 포함 된 JavaScript 함수 호출
- 9. iPad 앱을 클래스 덤프하는 방법은 무엇입니까?
- 10. C++에서 lib 파일의 c 함수 호출
- 11. C# 코드의 Window 서비스 호출
- 12. 프로토 타입이없는 C 함수 호출
- 13. CALayer를 CGImageRef에 덤프하는 방법은 무엇입니까?
- 14. DOCTYPE 요소를 덤프하는 방법은 무엇입니까?
- 15. TortoiseSVN, 저장소를 덤프하는 방법은 무엇입니까?
- 16. C++에서 트리를 만드는 방법은 무엇입니까?
- 17. JNA에서 C 함수 호출
- 18. C++ 호출 DLL 함수
- 19. C++ 함수 포인터 호출
- 20. C# 함수 호출?
- 21. C 함수 호출
- 22. C++ 함수 호출 식별자
- 23. C - 함수 호출
- 24. C++ 함수 호출 수신기
- 25. C 함수 호출 오류
- 26. PHP에서 C/C++ 라이브러리 함수 호출
- 27. 헤더 및 c- 파일에 함수 포인터를 선언하는 방법은 무엇입니까?
- 28. C# /. NET에서 C++ 함수 호출
- 29. C 프로그램에서 C++ 함수 호출
- 30. Objective-c C 함수 호출
왜이 C++에 태그가 붙어 있습니까? –
콜 트리를 작성하면 무엇을 의미합니까? – AJG85
매크로는 기능이 아닙니다. 매크로는 돋보이는 복사 붙여 넣기입니다. 그들은 어떤 종류의 디버거 또는 스택 추적에서도 결코 나타나지 않을 것입니다. –