perf-probe - 클라우드에서 온라인

이는 Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 제공자에서 실행할 수 있는 명령 perf-probe입니다.

프로그램:

이름


perf-probe - 새로운 동적 추적점 정의

개요


반환 한 탐침 [옵션] --add=조사 [...]
or
반환 한 탐침 [옵션] PROBE
or
반환 한 탐침 [옵션] --del=[그룹:]이벤트 [...]
or
반환 한 탐침 --list[=[그룹:]이벤트]
or
반환 한 탐침 [옵션] --line=LINE
or
반환 한 탐침 [옵션] --vars=프로브포인트
or
반환 한 탐침 [옵션] --funcs

기술


이 명령은 debuginfo 없이 심볼과 레지스터를 통해 동적 추적점 이벤트를 정의합니다.
또는 C 표현식(C 줄 번호, C 함수 이름 및 C 로컬 변수)을 사용하여
디버그인포.

옵션


-k, --vmlinux=PATH
debuginfo(Dwarf 바이너리)가 있는 vmlinux 경로를 지정합니다.

-m, --모듈=MODNAME|PATH
perf-probe가 프로브 지점이나 선을 검색할 모듈 이름을 지정하세요. 경로가
모듈 파일이 전달되면 perf-probe는 이를 오프라인 모듈로 처리합니다(즉,
(아직 로드되지 않은 모듈에 프로브를 추가합니다).

-s, --source=PATH
커널 소스 경로를 지정합니다.

-v, --자세한
더 자세한 정보를 제공합니다(구문 분석된 인수 표시 등). -q 옵션과 함께 사용할 수 없습니다.

-q, --조용한
조용히 하세요(오류를 포함한 모든 메시지를 표시하지 마세요). -v와 함께 사용할 수 없습니다.

-a, --추가=
프로브 이벤트를 정의합니다(자세한 내용은 PROBE SYNTAX 참조).

-d, --델=
프로브 이벤트를 삭제합니다. 이 기능은 glob 와일드카드(*, ?) 및 문자 클래스(예:
[az], [!AZ]).

-l, --list[=[그룹:]이벤트]
현재 프로브 이벤트를 나열합니다. 이벤트 이름 필터링 패턴도 허용합니다.

-L, --라인=
프로브할 수 있는 소스 코드 줄을 표시합니다. 여기에는 다음을 지정하는 인수가 필요합니다.
소스 코드의 범위입니다. (자세한 내용은 LINE SYNTAX 참조)

-V, --변수=
주어진 프로브 지점에서 사용 가능한 로컬 변수를 표시합니다. 인수 구문은 다음과 같습니다.
PROBE 구문은 있지만 인수는 없습니다.

--외부
(--vars에만 해당) 로컬 변수 외에 외부에서 정의된 변수를 표시합니다.

--인라인 없음
(--add에만 해당) 인라인되지 않은 함수만 검색합니다. 인라인되지 않은 함수는
인스턴스가 무시됩니다.

-F, --funcs[=필터]
주어진 모듈이나 커널에서 사용 가능한 함수를 표시합니다. -x/--exec 옵션을 사용하면 다음과 같이 나열할 수도 있습니다.
사용자 공간 실행 파일/공유 라이브러리의 함수입니다. FILTER도 허용할 수 있습니다.
규칙 주장.

--필터=필터
(--vars 및 --funcs에만 해당) 필터를 설정합니다. FILTER는 glob 패턴의 조합입니다.
세부 정보를 위한 필터 패턴. 기본 필터는 "!"입니다.ㅋ???탭_* & !--vars의 경우 crc_*" 및
--funcs의 경우 "!_*"입니다. 필터가 여러 개 지정된 경우 마지막 필터만 사용됩니다.

-f, --힘
기존 이름을 가진 이벤트를 강제로 추가합니다.

-n, --드라이런
드라이런. 이 옵션을 사용하면 --add 및 --del은 실제 추가 및 제거를 실행하지 않습니다.
작업.

--최대 프로브=갯수
이벤트에 대한 최대 프로브 포인트 수를 설정합니다. 기본값은 128입니다.

-x, --exec=경로
사용자 공간 추적을 위해 실행 파일이나 공유 라이브러리 파일의 경로를 지정합니다. 또한
--funcs 옵션과 함께 사용할 수 있습니다.

--demangle
응용 프로그램 심볼을 디매글링합니다. --no-demangle은 비활성화에도 사용할 수 있습니다.
디매글링.

--demangle-커널
커널 심볼을 디맹글링합니다. --no-demangle-kernel은 커널을 비활성화하는 데에도 사용할 수 있습니다.
디매글링.

-m/-x 옵션이 없는 경우 perf 프로브는 옵션 뒤에 있는 첫 번째 인수가 다음과 같은지 확인합니다.
절대 경로 이름입니다. 절대 경로인 경우 perf 프로브는 이를 대상으로 사용합니다.
모듈/대상 사용자 공간 바이너리를 조사합니다.

조사 통사론


프로브 포인트는 다음 구문으로 정의됩니다.

1) 함수 이름을 기반으로 이벤트 정의
[EVENT=]FUNC[@SRC][:RLN|+OFFS|%반환|;PTN] [ARG ...]

2) 줄 번호를 사용하여 소스 파일을 기반으로 이벤트를 정의합니다.
[이벤트=]SRC:ALN [ARG ...]

3) 지연 패턴을 사용하여 소스 파일을 기반으로 이벤트를 정의합니다.
[이벤트=]SRC;PTN [ARG ...]

이달의 이벤트 새 이벤트의 이름을 지정합니다. 생략하면 프로브된 이벤트의 이름이 설정됩니다.
기능입니다. 현재 이벤트 그룹 이름은 다음과 같이 설정되어 있습니다. 탐침. FUNC 프로브된 함수를 지정합니다
이름이며 다음 옵션 중 하나를 가질 수 있습니다. +OFFS 함수로부터의 오프셋입니다
바이트 단위의 항목 주소 :RLN 는 함수 입력 줄의 상대 줄 번호이며
%반품 함수 반환을 조사한다는 의미입니다. 그리고 ;PTN 게으른 매칭 패턴을 의미합니다(참조
LAZY MATCHING)에 주의하세요. ;PTN 프로브 포인트 정의의 끝이어야 합니다. 또한,
@SRC 해당 기능을 가진 소스 파일을 지정합니다. 또한 다음을 지정할 수도 있습니다.
소스 줄 번호 또는 지연 매칭을 사용하여 프로브 포인트를 지정합니다. SRC:ALN or SRC;PTN 통사론,
어디에 SRC 소스 파일 경로입니다. :ALN 줄 번호이고 ;PTN 게으른 매칭인가
패턴입니다. ARG 이 프로브 포인트의 인수를 지정합니다(PROBE ARGUMENT 참조).

조사 ARGUMENT


각 프로브 인수는 아래 구문을 따릅니다.

[NAME=]LOCALVAR|$retval|%REG|@SYMBOL[:TYPE]

이름 이 인수의 이름을 지정합니다(선택 사항). 로컬 이름을 사용할 수 있습니다.
변수, 로컬 데이터 구조 멤버(예: var→field, var.field2), 고정된 로컬 배열
인덱스(예: array[1], var→array[0], var→pointer[2]) 또는 kprobe-tracer 인수 형식
(예: $retval, %ax 등). 이 인수의 이름은 마지막으로 설정됩니다.
로컬 데이터 구조 멤버를 지정하는 경우 멤버 이름(예: field2)
var→필드1.필드2.) $변수 그리고 $매개변수 NAME에 대한 특수 인수도 사용할 수 있습니다. $변수
액세스할 수 있는 로컬 변수(함수 매개변수 포함)로 확장됩니다.
주어진 프로브 포인트. $매개변수 함수 매개변수로만 확장됩니다. TYPE 던지다
이 인수의 유형(선택 사항). 생략하면 perf 프로브가 자동으로 유형을 설정합니다.
debuginfo에서 지정할 수 있습니다. 로컬 변수 또는 구조체 멤버에 대해서만 입력
배열이거나 포인터인 것 이륜 전차 or 부호 이륜 전차 유형.

x86 시스템에서 %REG는 항상 레지스터의 약어입니다. 예: %AX. %RAX 또는
%EAX가 유효하지 않습니다.

LINE 통사론


줄 범위는 다음 구문으로 설명됩니다.

"FUNC[@SRC][:RLN[+NUM|-RLN2]]|SRC[:ALN[+NUM|-ALN2]]"

FUNC는 줄을 표시하는 함수 이름을 지정합니다. RLN 시작 줄 번호는 다음과 같습니다.
기능 입력 라인 및 RLN2 는 끝 줄 번호입니다. 프로브 구문과 동일하게, SRC 방법
소스 파일 경로, 알엔 시작 줄 번호이고 ALN2 파일의 끝 줄 번호입니다.
또한 다음을 사용하여 표시할 줄 수를 지정할 수도 있습니다. NUM. 또한, FUNC@SRC
여러 함수가 동일한 기능을 공유하는 경우 특정 함수를 검색하는 데 조합이 좋습니다.
이름입니다. 따라서 "source.c:100-120"은 source.c 파일의 100번째 줄부터 20번째 줄까지의 내용을 표시합니다. 그리고
"func:10+20"은 func 함수의 20번째 줄부터 10개의 줄을 보여줍니다.

LAZY 어울리는


지연 줄 매칭은 글로브 매칭과 유사하지만 패턴과 대상 모두에서 공백을 무시합니다. 따라서 와일드카드('*', '?')와 문자 클래스(예: [az], [!AZ])를 허용합니다.

아=* 캔 매치 a = b, a = b, a == b 등등.

이는 프로브 포인트 정의에 대한 일종의 유연성과 견고성을 제공합니다.
사소한 코드 변경. 예를 들어, schedule()의 실제 10번째 줄은 다음과 같이 쉽게 이동할 수 있습니다.
스케줄()을 수정하지만 동일한 라인 매칭 rq=cpu_rq* 아직도 존재할 수 있습니다
함수.)

FILTER 무늬


필터 패턴은 변수를 필터링하기 위한 글로벌 매칭 패턴입니다.
또한, "!"를 사용하여 필터링 제외 규칙을 지정할 수 있습니다. "&" 또는 "|"를 사용하여 여러 규칙을 결합하고, "(" ")"를 사용하여 여러 규칙을 하나의 규칙으로 묶을 수도 있습니다.

예를 들어 --filter "foo* | bar*"를 사용하면 perf probe -V는 "foo"로 시작하는 변수를 표시합니다.
"bar". --filter "!foo* & *bar"를 사용하면 perf probe -V는 "bar"로 시작하지 않는 변수를 표시합니다.
"foo"는 "fizzbar"처럼 "bar"로 끝나지만, "foobar"는 필터링됩니다.

사용 예


schedule()에서 어떤 줄을 조사할 수 있는지 표시합니다.

./perf 프로브 --라인 일정

12번째 줄에 CPU 로컬 변수를 기록하는 스케줄() 함수에 프로브를 추가합니다.

./perf 프로브 일정:12 cpu
or
./perf 프로브 --add='스케줄:12 cpu'

이렇게 하면 "schedule"로 시작하는 이름을 가진 프로브가 하나 이상 추가됩니다.

update_rq_clock()을 호출하는 schedule() 함수의 줄에 프로브를 추가합니다.

./perf 프로브 'schedule;update_rq_clock*'
or
./perf 프로브 --add='schedule;update_rq_clock*'

Schedule()에 있는 모든 프로브를 삭제합니다.

./perf 프로브 --del='schedule*'

/bin/zsh의 zfree() 함수에 프로브 추가

./perf probe -x /bin/zsh zfree 또는 ./perf probe /bin/zsh zfree

libc의 malloc() 함수에 프로브 추가

./perf probe -x /lib/libc.so.6 malloc 또는 ./perf probe /lib/libc.so.6 malloc

onworks.net 서비스를 사용하여 perf-probe를 온라인으로 사용하세요



최신 Linux 및 Windows 온라인 프로그램