Ubuntu 에 Systemtap 설치 하기
첫 번 째 단 계 는 설치 다.자신의 컴퓨터 에 설치 할 때 도 한바탕 애 를 썼 다.따라서 나중에 다시 설치 해 야 하 는 것 을 막 기 위해 나중에 공부 하 는 사람 을 도와 블 로 그 를 만들어 기록 할 준 비 를 하고 있다.
다음은 설치 절차 입 니 다.
(0) elfutils 를 설치 하고 디 버 깅 정 보 를 분석 하 는 라 이브 러 리 함수 와 libcap - dev 를 제공 합 니 다.
Ubuntu 의 편리 하고 강력 한 패키지 관리자 덕분에 설치 가 편리 합 니 다. 다음 과 같 습 니 다.
sudo apt-get install elfutils
sudo apt-get install libcap-dev
(1) 시스템 탭 을 설치 합 니 다.
Ubuntu 의 편리 하고 강력 한 패키지 관리자 덕분에 설치 가 편리 합 니 다. 다음 과 같 습 니 다.
sudo apt-get install systemtap
다음 에 마 운 트 해제 가 필요 하 다 면 다음 명령 을 실행 할 수 있 습 니 다.
sudo apt-get remove systemtap
원본 코드 를 통 해 설치 할 수도 있 고 주소 다운로드:https://sourceware.org/systemtap/ftp/releases/ 。압축 을 풀 고 루트 디 렉 터 리 에 들 어가 다음 명령 을 수행 합 니 다.
./configure
make
sudo make instal
나중에 마 운 트 해제 가 필요 하 다 면 루트 디 렉 터 리 에 들 어가 다음 명령 을 수행 할 수 있 습 니 다.
sudo make uninstall
(2) debug symbols 를 설치 합 니 다.
1), ddeb reposcory 설정.
sudo cat > /etc/apt/sources.list.d/ddebs.list << EOF
deb http://ddebs.ubuntu.com/ precise main restricted universe multiverse
EOF
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ECDCAD72428D7C01
sudo apt-get update
위 에 창고 주 소 를 추가 해도 ddebs. list 파일 뒤에 해당 주 소 를 직접 추가 할 수 있 습 니 다.
2) reposcory 를 추가 한 후 현재 커 널 버 전과 대응 하 는 debug symbols 를 다운로드 합 니 다.외국 친구 가 쓴 스 크 립 트 를 추천 합 니 다. 아주 잘 썼 습 니 다. 블 로그 링크 (http://www.domaigne.com/blog/random/getting-debug-kernel-on-ubuntu/), 관심 있 는 것 은 공부 하 러 갈 수 있 습 니 다.따라서 오류 발생 을 줄 이기 위해 이 스 크 립 트 를 다운로드 하고 설치 합 니 다.
wget http://www.domaigne.com/download/tools/get-dbgsym
chmod +x get-dbgsym
sudo ./get-dbgsy
스 크 립 트 를 실행 하면 다른 일 을 할 수 있 습 니 다. 오래 기 다 려 야 할 수도 있 기 때 문 입 니 다.
3), systemtap / libelf 생 성 에 필요 한 모듈 정보.다음 명령 을 debug 에 넣 습 니 다.ko.sh:
for file in `find /usr/lib/debug -name '*.ko' -print`
do
buildid=`eu-readelf -n $file| grep Build.ID: | awk '{print $3}'`
dir=`echo $buildid | cut -c1-2`
fn=`echo $buildid | cut -c3-`
mkdir -p /usr/lib/debug/.build-id/$dir
ln -s $file /usr/lib/debug/.build-id/$dir/$fn
ln -s $file /usr/lib/debug/.build-id/$dir/${fn}.debug
done
그리고 이 파일 을 실행 합 니 다:
sudo ./debug_ko.sh
(4) 설치 성공 여 부 를 테스트 합 니 다.다음 명령 을 실행 합 니 다:
stap -e 'probe kernel.function("sys_open") {log("hello world") exit()}'
터미널 에 "hello World" 를 인쇄 하면 설치 가 성공 했다 는 것 을 설명 합 니 다.없 으 면 계속 내 려 다 보 세 요.
(5) 상기 절차 에 따라 설치 한 후에 도 사용 할 수 없다 면 아래 의 장면 을 참고 하여 각각 보충 하 시기 바 랍 니 다.
1). (4) 의 명령 을 실행 하면 터미널 에서 다음 과 같은 정 보 를 인쇄 합 니 다.
stap: Symbol `SSL_ImplementedCiphers' has different size in shared object, consider re-linking
In file included from include/linux/mutex.h:15:0,
from /tmp/staphH2yQD/stap_6e022ad97cbe9c6f46b582f7a0eac81d_1242_src.c:25:
include/linux/spinlock_types.h:55:14: error: ‘__ARCH_SPIN_LOCK_UNLOCKED’ undeclared here (not in a function)
.raw_lock = __ARCH_SPIN_LOCK_UNLOCKED, \
^
include/linux/spinlock_types.h:79:15: note: in expansion of macro ‘__RAW_SPIN_LOCK_INITIALIZER’
{ { .rlock = __RAW_SPIN_LOCK_INITIALIZER(lockname) } }
^
include/linux/spinlock_types.h:82:16: note: in expansion of macro ‘__SPIN_LOCK_INITIALIZER’
(spinlock_t ) __SPIN_LOCK_INITIALIZER(lockname)
^
include/linux/mutex.h:111:18: note: in expansion of macro ‘__SPIN_LOCK_UNLOCKED’
, .wait_lock = __SPIN_LOCK_UNLOCKED(lockname.wait_lock) \
^
include/linux/mutex.h:117:27: note: in expansion of macro ‘__MUTEX_INITIALIZER’
struct mutex mutexname = __MUTEX_INITIALIZER(mutexname)
^
/tmp/staphH2yQD/stap_6e022ad97cbe9c6f46b582f7a0eac81d_1242_src.c:26:8: note: in expansion of macro ‘DEFINE_MUTEX’
static DEFINE_MUTEX(module_refresh_mutex);
^
scripts/Makefile.build:258: recipe for target '/tmp/staphH2yQD/stap_6e022ad97cbe9c6f46b582f7a0eac81d_1242_src.o' failed
make[1]: *** [/tmp/staphH2yQD/stap_6e022ad97cbe9c6f46b582f7a0eac81d_1242_src.o] Error 1
Makefile:1398: recipe for target '_module_/tmp/staphH2yQD' failed
make: *** [_module_/tmp/staphH2yQD] Error 2
WARNING: kbuild exited with status: 2
Pass 4: compilation failed. [man error::pass4]
일부 공유 라 이브 러 리 는 링크 를 다시 읽 고 다음 명령 을 실행 해 야 한 다 는 것 을 설명 합 니 다.
readlink /lib/modules/`uname -r`/build/
참고 문장 은 다음 과 같다.
1、http://www.domaigne.com/blog/random/running-systemtap-on-ubuntu/
2、https://sourceware.org/systemtap/wiki/SystemtapOnUbuntu
3、https://wiki.ubuntu.com/Kernel/Systemtap
【 주 】 전 재 는 본인 의 동 의 를 거 쳐 출처 를 밝 혀 야 합 니 다.http://www.cnblogs.com/wtb2012/p/5218889.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.