티스토리 뷰
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
- kata container
- boundary ssh
- crashloopbackoff
- jenkins
- minio
- Terraform
- DevSecOps
- OpenStack
- openstacksdk
- aquasecurity
- mattermost
- ceph
- nginx-ingress
- kubernetes
- ansible
- K3S
- GateKeeper
- metallb
- minikube
- vmware openstack
- hashicorp boundary
- azure policy
- socket
- macvlan
- Jenkinsfile
- openstack backup
- Helm Chart
- wsl2
- kubernetes install
- open policy agent
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |