2017-11-16 33 views
1

성능 정보를 추출하기 위해 PowerPC 시스템에서 프로세스를 모니터링합니다. 이 프로세스의 디버그 기호를 어떻게로드 할 수 있습니까? 내가 다음 명령perf를 사용하는 디버그 기호 사용

perf record -g dwarf -p 4591 

를 사용하고 난이 "난쟁이가 (그런 파일이나 디렉토리를) 찾을 수 없습니다"라는 오류을 당신은 기능에 대한 디버그 정보를로드하는 방법을 나에게 힌트를주지하시기 바랍니다 수 보고서가 생성 될 때 호출 되었습니까?

+1

의역을 말로 나타내지 말고 항상 축 어적 인 오류 메시지를 게시하십시오! 당신이 도움을받을 가능성이 훨씬 높아집니다. – Zulan

답변

1
perf record -g dwarf -p 4591 

방법을 선택하는 올바른 옵션이 -g 반면 --call-graph 요즘은 기본 방법 fp의와 호출 스택을 가능하게하는 유일한 플래그이다.

man perf-record. 그런데

-g 
    Enables call-graph (stack chain/backtrace) recording. 

--call-graph 
    Setup and enable call-graph (stack chain/backtrace) recording, 
    implies -g. Default is "fp". 

    Allows specifying "fp" (frame pointer) or "dwarf" 
    (DWARF's CFI - Call Frame Information) or "lbr" 
    (Hardware Last Branch Record facility) as the method to collect 
    the information used to show the call graphs. 

    In some systems, where binaries are build with gcc 
    --fomit-frame-pointer, using the "fp" method will produce bogus 
    call graphs, using "dwarf", if available (perf tools linked to 
    the libunwind or libdw library) should be used instead. 
    Using the "lbr" method doesn't require any compiler options. It 
    will produce call graphs from the hardware LBR registers. The 
    main limitation is that it is only available on new Intel 
    platforms, such as Haswell. It can only get user call chain. It 
    doesn't work with branch stack sampling at the same time. 

    When "dwarf" recording is used, perf also records (user) stack dump 
    when sampled. Default size of the stack dump is 8192 (bytes). 
    User can change the size by passing the size after comma like 
    "--call-graph dwarf,4096". 

시도 fp 첫째 - 그것은 훨씬 더 효율적이지만, 최적화 된 바이너리 (예를 들어 --fomit-frame-pointer) 잘 작동하지 않습니다. 또한 이것은 디버그 정보와 거의 관련이 없습니다. 스택 추적을 알 필요가 없으면 -g을 추가 할 필요가 없습니다.

1

-g dwarf을 지원하지 않지만 (인수없이) -g 만 지원합니다. 즉, DWARF 되감기를 지원하지 않습니다.