uftrace를 사용하여 C ++ 프로그램을 프로파일 링 한 후 2 개의 main () 함수를 이해하는 방법은 무엇입니까?

난 샤오

다음과 같은 간단한 프로그램 을 프로파일 하기 위해 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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관