strace

소프트웨어 스크린 샷:
strace
소프트웨어 정보:
버전: 4.19 업데이트
업로드 날짜: 23 Nov 17
라이센스: 무료
인기: 23

Rating: 5.0/5 (Total Votes: 1)

strace는 개발자 및 시스템 관리자 용으로 설계된 자유롭게 배포되는 오픈 소스 소프트웨어이며 C로 구현되고 GNU / Linux 운영 체제에서만 실행되도록 설계된 시스템 호출 추적 프로그램을 제공합니다.

이 프로그램은 프로그램이나 프로세스에 의해 생성 된 모든 시스템 호출을 수집하고 추적을 인쇄 할 수있는 매우 유용한 디버깅, 지시 및 진단 유틸리티입니다. 콘솔 환경이나 터미널 에뮬레이터 앱에서만 사용할 수있는 명령 줄 프로그램입니다.

도구는 진단 전문가, 문제 해결사 및 폐쇄 소스 프로그램의 문제를 해결하기위한 귀중한 솔루션을 원하는 시스템 관리자가 사용할 수 있습니다. Dmitry V. Levin, Roland McGrath 및 Wichert Akkerman이 쓴 것입니다.


명령 줄 옵션

다른 명령 줄 소프트웨어와 마찬가지로 strace는 사용자가 작업을 수행하기 위해 모든 기능과 기능을 쉽게 사용할 수 있도록 다양한 명령 줄 옵션을 제공합니다. 모든 명령 행 옵션은 & lsquo; strace --help & rsquo;를 실행하면 한 눈에 볼 수 있습니다. 명령.

가장 흥미로운 커맨드 라인 옵션 중에는, 각 시스템 호출 시간, 호출 및 에러 카운트, 시스템 호출 대기 시간 요약, 특정 경로에 대한 접근 추적 지원, 디버그 출력을 표준 오류로 지원하는 기능, 트레이서 프로세스를 부모가 아닌 분리 된 손주로 실행하는 기능을 지원합니다.

또한 stderr 대신 특정 파일에 추적 정보를 보내고 syscall을 오버 헤드 usec로 추적하는 오버 헤드를 설정하고 추적 프로세스에 대한 PID 파일을 설정하고 인쇄 문자열의 길이를 제한 할 수 있습니다 문자를 strsize하고, setgid 및 / 또는 setuid를 처리하는 사용자 명으로 명령을 실행하고, 특정 시스템 호출을 분리합니다.


strace 시작하기

strace는 소스 타르볼 (tarball)로만 배포되지만 주요 소프트웨어 저장소에서 수많은 Linux 배포판에 쉽게 설치할 수 있습니다. 소스에서 설치하려면 Softoware에서 최신 버전을 다운로드하고 선택한 위치에 아카이브를 저장하고 압축을 풉니 다.

터미널 앱을 열고 압축 해제 된 보관 파일 (예 : cd /home/softoware/strace-4.9)의 위치로 이동하고 ./configure && make & rsquo; 명령을 사용하여 strace를 구성하고 컴파일 한 다음 & lsquo; make install & rsquo; root로 명령하거나 & sudo make install & rsquo; 명령을 사용하여 strace 시스템 전체를 설치하십시오.

이 릴리스의 새로운 기능 :

개선 사항 :
소켓 디스크립터와 관련된 프로토콜 및 주소 정보를 인쇄하는 -yy 옵션이 추가되었습니다.
확장 된 "-e read = set" 및 "-e write = set" sendmsg, recvmsg, sendmmsg 및 recvmmsg syscalls를 포함하는 옵션.
ioctl 명령의 전체 32 비트 디코딩 구현 (데비안 버그 # 692913 및 페도라 버그 # 902788)
ia64에서 PTRACE_GETREGS API 지원을 구현했습니다.
Mips에서 PTRACE_GETREGS API 지원을 구현했습니다.
s390 / s390x에서 PTRACE_GETREGSET API 지원을 구현했습니다.
getrandom 및 seccomp syscalls의 디코딩 구현.
64 비트 기능 세트 전체를 구현했습니다.
모든 prctl 명령의 디코딩 구현.
매개 변수화 된 ioctl 명령의 디코딩 구현.
evdev ioctl 명령의 디코딩 구현.
v4l ioctl 명령의 디코딩 구현.
SG_IO v4 ioctl 명령의 디코딩 구현.
FIFREEZE / FITHAW / FITRIM ioctl 명령의 디코딩 구현.
FALLOC_FL_ * fallocate 플래그의 디코딩 구현.
aarch64, x32 및 x86_64에서 rt_sigreturn 신호 마스크의 디코딩 구현.
블루투스 소켓을 지원하는 향상된 소켓 디코더.

나열되지 않은 ioctl 명령의 향상된 디코딩
getsockopt 및 setsockopt syscall의 향상된 디코딩
sysinfo 시스템 호출의 향상된 디코딩
struct cmsghdr의 향상된 디코딩
대기 상태의 향상된 디코딩
외부 libaio.h를 사용하여 비 x86 아키텍처에서 향상된 aio 지원
인식 된 열린 모드 플래그 목록에 O_TMPFILE을 추가했습니다.
statfs 계열 시스템 호출을 디코딩 할 때 사용되는 파일 시스템 유형 상수 목록을 업데이트했습니다.
CAP_ *, PR_ *, PTRACE_ *, SCHED_ *, SO_ *, SOL_ *, SWAP_FLAG_ * 및 TFD_ * 상수 목록이 업데이트되었습니다.
Linux 3.19의 신호 상수 목록 업데이트.
Linux 3.19에서 errno 상수의 업데이트 된 목록.
Linux 3.9에서 업데이트 된 ioctl 명령 목록.
Linux 3.19와 일치하는 새로운 syscall 항목 추가.
버그 수정:
syscall 번호와 syscall 인수의 수, syscall의 이름, syscall 디코더와 같은 관련 정보 간의 매핑에서의 다양한 오류를 수정했습니다.
인쇄 설명자, 파일 이름, 네트워크 인터페이스 이름, struct utsname 구성원, BLK * ioctl 명령의 장치 / 볼륨 이름에서 인용 부호가 고정되어 있습니다.
uid_t / git_t 디코딩을 수정했습니다.getdents / getdents64 디코더에서 잠재적 인 아웃 오브 바운드 읽기 문제가 수정되었습니다.
일부 아키텍처에서는 잠재적 인 열린 플래그 잘림이 수정되었습니다.
struct ifreq.ifr_name의 고정 디코딩.
SIOCSIFNAME ioctl 명령의 디코딩을 수정했습니다.
RENAME_ * renameat2 플래그의 고정 디코딩.
UTIME_NOW / UTIME_OMIT 시간대 구조의 고정 디코딩.
일부 아키텍처에서 간접 IPc 하위 호출의 고정 디코딩
32 비트 아키텍처에서 fanotify_mark 시스템 콜을 수정했습니다.
64 비트 아키텍처에서 32 비트 stat 구조의 고정 디코딩
64 비트 아키텍처에서 32 비트 struct cmsghdr의 고정 디코딩.
64 비트 아키텍처에서 32 비트 preadv / pwritev 오프셋의 고정 디코딩
ia64, ppc, ppc64, sparc, sparc64, mips 및 s390에서 sigreturn / rt_sigreturn 신호 마스크의 고정 디코딩
여러 인격을 지원하는 아키텍처에서 고정 명령 포인터 출력 (-i 옵션).
"-e read = set"의 고정 동작 및 "-e write = set" 읽기 및 쓰기 세트가 교차 할 때
struct sigaction에 sa_restorer 멤버가없는 시스템에서 빌드가 수정되었습니다.
uclibc 및 musl libc로 빌드 수정.
이식성 :

Linux 커널 ≥2.5.46이 필요합니다. 알맞은 PTRACE_SETOPTIONS 지원이없는 이전 버전은 작동하지 않습니다.
mips에서는 리눅스 커널> = 2.6.15가 필요합니다. 알맞은 PTRACE_GETREGS 지원이없는 이전 버전은 작동하지 않습니다.
s390 및 s390x에서는 Linux 커널> = 2.6.27이 필요합니다. 알맞은 PTRACE_GETREGSET 지원이없는 이전 버전은 작동하지 않습니다.

버전 4.9의 새로운 기능 :

행동 변화 :
ARM EABI 시스템에서 기본적으로 비활성화 된 OABI 지원 - 구성 할 때 활성화 할 수 있도록 --enable-arm-oabi 옵션이 추가되었습니다.
개량:
추적 된 각 시스템 콜 후에 스택 추적을 인쇄하는 실험적 -k 옵션이 추가되었습니다.
-w 옵션을 추가하여 syscall 대기 시간에 대한 통계를 생성합니다. (데비안 버그 # 457497).
ARC 아키텍처 지원을 추가했습니다.
PowerPC에 PTRACE_GETREGS API 지원이 추가되었습니다.
강화 된 Bionic libc 및 musl libc 지원.
x86_64 및 x32에서 x86 개인 데이터 프로세스의 향상된 추적.
AArch64에서 ARM 특성 프로세스의 향상된 추적.
PowerPC에서 향상된 32/64 비트 특성 감지.
add_key, ioprio_get, ioprio_set, kexec_load, keyctl, renameat2 및 request_key syscalls의 디코딩 구현.
select, pselect 및 io_submit 시스템 호출의 강력한 디코딩
delete_module, fanotify_init, fanotify_mark, fcntl, setdomainname, sethostname, setns 및 sync_file_range 시스템 모니터링의 향상된 디코딩
신호 비트 마스크의 향상된 디코딩
파일 기술자의 향상된 디코딩
향상된 siginfo_t 디코딩.
향상된 PF_NETLINK 디코딩.

업데이트 된 CLOCK_ * 상수 (Fedora 버그 # 1088455를 다룹니다).
Linux 3.16과 일치하는 새로운 syscall 항목 추가.
버그 수정:
shmat 및 shmdt를 메모리 맵핑 관련 syscalls 세트에 추가했습니다.
중지 된 프로세스에서 고정 분리.
32 비트 아키텍처에서 fanotify_mark 디코딩을 수정했습니다.
preadv 및 pwritev 시스템 콜에서 고정 오프셋 디코딩.
_FORTIFY_SOURCE 모드에서 glibc에 대한 선택 디코딩을 고정했습니다.
EPOLL_CTL_DEL 인수로 epoll_ctl syscall을 수정했습니다.
빌드시와 충돌을 수정했습니다 (Fedora 버그 # 993384).
매뉴얼 페이지의 기타 수정. (Debian 버그 # 725987을 참고하십시오).

버전 4.8의 새로운 기능 :

행동 변화 :
정상적인 strace 종료의 경우, trace 출력이 파이프로 재 지정 될 때 strace는 이제이를 닫고 종료하기 전에 파이프 프로세스 종료를 기다립니다.
개량:
PTRACE_SEIZE API를 사용하여 추적을 구현했습니다 (사용 가능한 경우).
x86-64 및 x32 (사용 가능한 경우)에서보다 안정적인 PTRACE_GETREGSET 기반 프로세스 특성 감지를 구현했습니다.
메모리 매핑 관련 syscalls을 추적하기위한 -e trace = memory 옵션을 추가했습니다.
문서화 된 -b 옵션
허용 된 종료 상태 메시지는 -q 옵션을 두 번 지정하면 표시되지 않습니다.
AArch64 아키텍처 지원 추가 (데비안 버그 # 693074 및 페도라 버그 # 969858).
OpenRISC 1000, Meta 및 Xtensa 아키텍처에 대한 지원이 추가되었습니다.
Tile에 tilegx 특성 지원 추가.
NOMMU 아키텍처의 향상된 지원.
getdents, mmap, perf_event_open, ptrace 및 quotactl syscalls의 향상된 디코딩
Linux 3.9와 일치하는 새로운 syscall 항목 추가.
Linux 3.9에서 일반적인 ioctl 이름 목록을 다시 생성했습니다.
errno 상수 목록을 업데이트했습니다.
AF_ *, MADV_ *, MAP_ *, MSG_ *, MS_ *, PF_ *, PR_ *, PTRACE_O_ * 및 TCP_ * 상수 목록이 업데이트되었습니다.

UBI ioctls의 디코딩 구현.
여분의 "* 32" ioctl 이름.
버그 수정:
수정 된 ERESTARTNOINTR이 고대 커널의 사용자 공간으로 유출되었습니다 (Fedora 버그 # 659382 주소).
고정 커널 릴리즈 문자열 구문 분석 (데비안 버그 # 702309)
* xattr syscalls의 수정 된 디코딩 (페도라 버그 # 885233 주소).
32 비트 strace로 64 비트 inode 번호로 파일을 처리하는 문제가 수정되었습니다 (Fedora 버그 # 912790 참조).
SPARC의 고정 추적 포크.
fadvise64, fallocate, ftruncate64, io_submit, pread, preadv, pwrite, pwritev, readahead, sigaltstack, sync_file_range, sysctl 및 truncate64 syscalls의 고정 디코딩.
지원되는 대부분의 아키텍처에서 여러 시스템 콜을 고정 카테고리.
기본이 아닌 32 비트 특성 인 recv [m] msg syscalls의 고정 디코딩
x32에서 여러 32 비트 특성 계시기의 고정 디코딩.
ARM, MIPS / o32, PowerPC, S390x 및 Tile 구조에서 long long syscall 인수의 고정 디코딩.
S390x에서의 semtimedop 디코딩을 수정했습니다.
Blackfin에서 sram_alloc 디코딩을 수정했습니다.
process_vm_readv가 찌르는 경우 빌드가 수정되었습니다.
libaio.h의 이전 버전으로 빌드가 수정되었습니다.

버전 4.7의 새로운 기능 :

이것은 안정적인 릴리스이며 일반적인 버그 수정, 새로운 Linux 커널에 대한 지원 향상 및 기타 개선 사항이 포함되어 있습니다.

버전 4.6의 새로운 기능은 다음과 같습니다.

일반적인 버그 수정, 새로운 Linux 커널 지원 향상 및 복제본을 따르는 새로운 방법, fork 및 vfork 시스템 콜을 사용하여 스레드 및 하위 프로세스 작성 추적을위한 Linux 커널의 명시 적 기능을 사용합니다.

4.5.20 버전의 새로운 기능 :

개선 사항 :
새로운 linux syscalls의 디코딩 구현 : inotify_init1, recvmmsg.
새 Linux syscalls의 기본 디코딩 구현 : preadv, pwritev, rt_tgsigqueueinfo, perf_event_open.
베어드 디코더를 x86 / x86-64 용으로 초기에 활성화 된 정교한 파서로 대체하여 비 x86 아키텍처에서 최근에 추가 된 syscalls의 향상된 디코딩
일반 및 -c 출력을 결합하는 -C 옵션을 구현했습니다. (데비안 버그 # 466196 주소)
mbind 및 mremap syscalls의 향상된 디코딩
향상된 SOL_PACKET 소켓 옵션 디코딩.
linux 2.6.33에서 ioctl 이름의 재생 목록.
TILE 아키텍처 지원 추가.
버그 수정:
Linux 커널 헤더 2.6.32-rc5 +로 수정되었습니다. (데비안 버그 # 560516 및 페도라 버그 # 539044)
mips에서 빌드가 수정되었습니다.
struct statfs64가없는 Linux 시스템 처리가 수정되었습니다.
powerpc에서 sigreturn에 의한보고 신호 마스크를 수정했습니다.
선택 디코더에서 잠재적 인 스택 버퍼 오버플로가 수정되었습니다. (주소 페도라 버그 # 556678)
수정 된 msgsnd 간접 ipccall 디코딩.
64 비트 시스템 콜의 디코딩을 수정했습니다. (데비안 버그 # 570603 주소)


sizeof (long) & gt; & gt; sizeof (int) (데비안 버그 # 494844)
epoll_pwait의 디코딩을 수정했습니다. (Debian 버그 # 513014를 해결합니다)
살해 된 실의 처리가 수정되었습니다.

유사한 소프트웨어

gDEBugger
gDEBugger

2 Jun 15

Electric Fence
Electric Fence

3 Jun 15

scanmem
scanmem

2 Jun 15

코멘트 strace

댓글을 찾을 수 없습니다
코멘트를 추가
이미지를 켜십시오!