다음과 같은 간단한 프로그램 을 프로파일 링 하기 위해 uftrace 를 시도 하고 C++
있습니다.
#include <iostream>
class A {
public:
A() {std::cout << "A is created" << std::endl;}
~A() {std::cout << "A is destroyed" << std::endl;}
};
int main() {
A a;
return 0;
}
프로필 결과는 다음과 같습니다.
# uftrace a.out
A is created
A is destroyed
# DURATION TID FUNCTION
2.026 us [ 4828] | __cxa_atexit();
[ 4828] | main() {
[ 4828] | __static_initialization_and_destruction_0() {
89.397 us [ 4828] | std::ios_base::Init::Init();
0.768 us [ 4828] | __cxa_atexit();
93.029 us [ 4828] | } /* __static_initialization_and_destruction_0 */
94.425 us [ 4828] | } /* main */
[ 4828] | main() {
[ 4828] | A::A() {
11.104 us [ 4828] | std::operator <<();
10.825 us [ 4828] | std::basic_ostream::operator <<();
24.514 us [ 4828] | } /* A::A */
[ 4828] | A::~A() {
0.978 us [ 4828] | std::operator <<();
1.676 us [ 4828] | std::basic_ostream::operator <<();
4.819 us [ 4828] | } /* A::~A */
31.428 us [ 4828] | } /* main */
2.095 us [ 4828] | std::ios_base::Init::~Init();
나를 혼란스럽게하는 것은 2 main()
기능 이 있다는 것입니다 . 추적을 보면 iostream
초기화 와 관련이있는 것 같지만 1 main()
모든 실행 파일에 대한 항목 만 있어야한다고 생각 합니다. 그것을 해석하는 방법?
uftrace
심볼 demangler에서 일부 접두사를 제거하는 데 사용되었지만 일부 사용자를 혼란스럽게 할 수 있으므로 유지하기 위해 패치를 제출했으며 지금 병합되었습니다-https: //github.com/namhyung/uftrace/pull/87
따라서 uftrace
현재 마스터로 업데이트 하는 경우 . 첫 번째 main()
는 지금 _GLOBAL__sub_I_main()
입니다.
의견을 보내 주셔서 감사합니다!
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다