2017-12-13 26 views
0

대상 프로세스/프로그램의 어셈블리 코드를 처리하기 위해 perf record을 수정하려고합니다. 따라서 데이터 구조이 대상 프로세스/프로그램의 어셈블리 코드 및 위치를 저장하는 데 어디에서 사용되는지 알고 싶습니다.perf 레코드 저장소 어셈블리 코드를 수행하는 방법

일반적으로 perf record은 완료되면 'perf.data'라고 쓰고 perf record을 사용할 수 있습니다. '입력'을 누르고 '주석'을 선택하면 대상 프로세스/프로그램의 어셈블리 코드를 볼 수 있습니다. 이 방법으로, 우리는 어떤 코드 라인이 계산의 이유인지 알 수 있습니다.

+0

실제로 달성하고자하는 것에 대한 자세한 내용을 추가해야합니다. 질문은 매우 불분명하다. –

+0

감사합니다. 'perf 레코드'명령어는 rusult 파일'perf.data' 대신 실시간으로 타겟 진행/프로그램의 어셈블리 코드의 카운터 번호와 카운터 위치를 실시간으로 출력 할 수 있도록'perf' 소스 코드를 수정하려고합니다. –

답변

1

perf record 어떤 식 으로든 어셈블리를 처리하지 않으며 perf.data에 저장된 어셈블리 나 지침도 없습니다. perf record은 명령 포인터를 포함하는 이벤트를 기록합니다. perf report 및 기타 분석 도구 중에는 MMAP 정보를 사용하여 DSO 내의 주소로 변환됩니다. perf은 파일 이름을 해당 바이너리로 알고 있습니다. 녹음 후 바뀐 버전을 사용하려면 .debug/.build-id 아래의 바이너리 복사본을 사용할 수 있습니다. Perf는 파일에 objdump을 실행하여 디스 어셈블리를 가져와 주석이 달린보기를 표시합니다.

이 질문에 대한 답변이지만 추가 정보가 없으면 실제로 원하는 것을 달성하는 데 도움이되는 것은 불가능합니다. perf_event_open을 기반으로 자신 만의 도구를 만들 수도 있습니다.

+0

당신이 말했듯이 'perf record'는 명령 포인터를 포함하는 이벤트를 기록합니다. 그래서 데이터 구조 나 퍼포먼스는 명령 포인터의 내용 (예 : 가상 주소)을 저장하기 위해 어디에 사용됩니까? –