본문 바로가기

공부/리눅스

uftrace 를 이용한 함수 추적 - 2 지난 글 uftrace 를 이용한 함수 추적 - 1 uftrace 를 이용한 함수 추적 uftrace란 uftrace는 C/C++로 작성된 컴파일된 유저 프로그램의 함수 호출 관계를 추적하는 도구입니다(옵션에따라 커널의 함수도 추적이 가능합니다). 리눅스 커널의 ftrace에서 영감을 받아 만들어진 willow72.tistory.com 지난번에 이어 uftrace에 대해 알아보겠습니다. record/replay uftrace 는 실행 결과를 기록(저장)하고 반복해서 출력 가능하도록 기능을 지원합니다. $ uftrace recorde ./test 기본적인 uftrace 명령어를 실행할 경우 함수 추적 결과가 나오지만 recorde 명령어를 함께 사용할 경우 프로그램 자체의 실행 결과만을 보여줍니다. 대신 .. 더보기
uftrace 를 이용한 함수 추적 uftrace란 uftrace는 C/C++로 작성된 컴파일된 유저 프로그램의 함수 호출 관계를 추적하는 도구입니다(옵션에따라 커널의 함수도 추적이 가능합니다). 리눅스 커널의 ftrace에서 영감을 받아 만들어진 툴이라고하는데 ftrace와는 다르게 사용자 레벨의 프로그램을 지원한다고합니다. 함수 호출 관계를 추적하며 실행 루틴 분석은 물론 함수의 실행 시간까지 확인 가능해 프로그램을 분석 유용한 명령어를 지원해줍니다. 환경 ubuntu 20.04 uftrace 설치 git 저장소로부터 소스코드를 받아옵니다. git clone https://github.com/namhyung/uftrace.git 의존성 패키지를 설치합니다. misc디렉토리 내에 의존성 패키지를 받을 수 있는 쉘스크립트가 있습니다. $ .. 더보기
2. Docker Image Build를 이용한 클러스터링 용 도커 이미지 생성 1. 도커 허브(Docker Hub) 계정이 필요합니다. 아래 링크에서 가입을 할 수 있습니다. https://hub.docker.com/ Docker Hub Docker Certified:Trusted & Supported Products Certified Containers provide ISV apps available as containers. Certified Plugins for networking and volumes in containers. Certified Infrastructure delivers an optimized and validated Docker platform for enterp hub.docker.com 2. 로그인을하고 리포지토리를 생성합니다. 다음과 같은 창에서 저장.. 더보기
1. Docker 를 이용한 RabbitMQ 클러스터링 회사 업무로 도커 스웜(Docker swarm)을 이용해 RabbitMQ 클러스터링을 구성하게 됐습니다. 연구실에서는 커널만 하던 고인물인데 회사에서 새로운 프로젝트에 들어가며 낯선 일들이 늘고 결국 간단하게만 사용해봤던 도커를 다시 건드리게됐습니다. 최종 목표는 앞서 언급한데로 도커 스웜을 이용해 클러스터링을 구성하는 것이지만 공부할 겸 단계별로 포스팅을 해보려합니다. 계획은 3단계로 잡고 있습니다. 1. Docker를 이용한 RabbitMQ 클러스터링 2. Docker Image Build를 이용한 클러스터링 용 도커 이미지 생성 3. Docker Swarm을 이용한 RabbitMQ 클러스터링 Docker를 이용해 RabbitMQ를 클러스터링 할 때는 다음과 같은 3단계를 거치며, 필요에 따라 미러링.. 더보기
(ubuntu 16.04)ssh algorithm negotiation failed 우분투를 다시 깔아야 했는데 16.04가 최신버전이길래 한번 시도해봤습니다.다 설치하고 ssh로 접속해보니 다음과 같은 메시지(14.04에서도 떴었는데 당시에는 크게 신경도 안썼고 버그라는 소문도 들은듯합니다. 그때 당시도 비슷하게 수정작업을 했는데 결국엔 안됐던.. 16.04는 잘 해결되서 글남깁니다) 1. sudo vim /etc/ssh/sshd_config2. 아래 내용 추가Ciphers aes128-cbc,aes192-cbc,aes256-cbc,aes128-ctr,aes192-ctr,aes256-ctr,3des-cbc,arcfour128,arcfour256,arcfour,blowfish-cbc,cast128-cbc MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hm.. 더보기
리눅스 커널 맵 (이미지 클릭)#리눅스커널맵입니다.그림으로 보는 것도 좋지만 아래 링크를 타고 들어가면 시스템 함수의 호출 순서를 더 크게 볼 수도 있고,lxr로 편하게 시스템 함수를 따라갈 수 도 있습니다. (추가 참고할만한 사이트)http://docs.huihoo.com/linux/kernel/a1/ 더보기
make와 vi통합 사용 make와 vi 통합하면 소스코드 수정 후 vi를 종료하고 컴파일을하는 번거로움을 줄일 수 있다. 먼저 간단하게 작성한 테스트 파일그냥 소스코드 하나와 make파일 하나 두 툴을 함께 사용하는 방법은 일단 vi를 열고 명령어모드(:)를 입력 그러고 나면 아래와 같이 에러 메시지들을 볼 수 있음. wq를 누르는 번거로운 일이 하나 더 줄었음.더 나아가 출력되는 메시지에 따라 엔터를 누르면 에러가 발생한 위치로 이동됩니다. 에러 메시지를 다시 확인하려면 명령어모드에서 cw를 입력하면 아래쪽에서 에러 메시지를 확인할 수 있음 창을 보면 수평으로 나눠진 것을 볼수 있는데 ctrl+w, w를 순차적으로 누르면 창 사이를 오갈 수 있음나눠진 창 종료는 vi와 마찬가지로 :q를 사용 만약 하단에 원하는 창 크기를 지.. 더보기