티스토리 뷰
strace는?
시스템콜 및 시그널을 추적하는 명령어
프로그램의 문제를 분석하는 디버깅하는 용도로 사용됨.
사용법은 ID 혹은 Command 로 나뉘어 추적할수 있다.
usage: strace [-CdffhiqrtttTvVwxxy] [-I n] [-e expr]...
[-a column] [-o file] [-s strsize] [-P path]...
-p pid... / [-D] [-E var=val]... [-u username] PROG [ARGS]
or: strace -c[dfw] [-I n] [-e expr]... [-O overhead] [-S sortby]
-p pid... / [-D] [-E var=val]... [-u username] PROG [ARGS]
사용했던 option은 다음과 같다.
-f follow forks
-o file send trace output to FILE instead of stderr
-tt print absolute timestamp with usecs
-s strsize limit length of print strings to STRSIZE chars (default 32)
-p pid trace process with process id PID, may be repeated
사용법
다음과 같은 예시를 따라할 수 있다.
참고로 vsftpd를 기존에 설치하여 동작중일때 아래와 같은 pid확인 및 strace사용이 가능하다.
[root@server ~]# ps aux | grep vsftpd | grep -v "grep" | awk '{print $2}'
[root@server ~]# yum install strace -y
[root@server ~]# strace -f -o /tmp/vsftpd.strace -s 1024 -tt -p 3301
[root@client ~]# ftp 10.10.10.10
[root@server ~]# ## "ctrl + c"
[root@server ~]# vim /tmp/vsftpd.strace
아래와 같이 함수호출과정에 대한 확인이 가능하다.
26937 15:21:23.305953 fstat(3, {st_mode=S_IFREG|0755, st_size=61624, ...}) = 0
26937 15:21:23.306014 mmap(NULL, 2173016, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f30ed439000
26937 15:21:23.306071 mprotect(0x7f30ed445000, 2093056, PROT_NONE) = 0
26937 15:21:23.306128 mmap(0x7f30ed644000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xb000) = 0x7f30ed644000
26937 15:21:23.306200 mmap(0x7f30ed646000, 22616, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f30ed646000
26937 15:21:23.306263 close(3) = 0
26937 15:21:23.306386 mprotect(0x7f30ed644000, 4096, PROT_READ) = 0
26937 15:21:23.306445 munmap(0x7f30f0bc6000, 29570) = 0
26937 15:21:23.306511 open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 3
26937 15:21:23.306646 fstat(3, {st_mode=S_IFREG|0644, st_size=3236, ...}) = 0
26937 15:21:23.306722 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f30f0bcd000
이를 통해 buffer overflow가 발생시 troubleshooting도 가능하다.
혹 Red Hat Enterprise Linux를 사용하는 경우 debuginfo-install을 통해 symbol을 설치하여 gdb를 통한 trouble shooting도 가능하다.
[root@client ~]# debuginfo-install ftp
[root@client ~]# gdb ftp 10.10.10.10
참고사이트
'os > Linux' 카테고리의 다른 글
ssh certification (0) | 2014.09.01 |
---|---|
desktop icon execution of root privilege in ubuntu (0) | 2013.05.13 |
standard streams (0) | 2013.04.12 |
ssh character encoding (0) | 2013.03.15 |
vim (vi) (0) | 2012.09.10 |
- Total
- Today
- Yesterday
- open policy agent
- GateKeeper
- openstacksdk
- nginx-ingress
- azure policy
- ansible
- minikube
- ceph
- vmware openstack
- DevSecOps
- hashicorp boundary
- socket
- jenkins
- kubernetes install
- wsl2
- mattermost
- boundary ssh
- OpenStack
- crashloopbackoff
- aquasecurity
- Terraform
- metallb
- K3S
- kata container
- minio
- Jenkinsfile
- macvlan
- openstack backup
- kubernetes
- Helm Chart
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |