Strace 명령은 어떻게 작동합니까?
Strace는 프로그램이 실행될 때 시스템 호출을 가로 채고 자세한 정보를 출력하여 문제를 분석하는 데 도움이되는 Linux의 진단, 디버깅 및 교육 도구입니다. 핵심 원칙은 ptrace () 시스템 호출을 사용하여 대상 프로세스를 제어하고 시스템 호출이 통화 세부 사항을 기록하는 것마다 프로세스를 일시 중지하는 것입니다. 일반적인 용도에는 디버깅 응용 프로그램, 종속성 식별, 성능 분석 및 보안 감사가 포함됩니다. 일반적인 시나리오에는 위치 구성 파일의 열기 실패, 네트워크 연결 차단 또는 메모리 매핑 오류가 포함됩니다. 그것을 사용할 때 Strace -f MyCommand를 사용하여 새 프로세스를 시작하거나 Strace -p PID를 사용하여 기존 프로세스에 연결할 수 있습니다. 일반적인 옵션에는 파일에 대한 -o 출력, -tt 추가 타임 스탬프, -t 디스플레이 호출 시간, -s 증가 문자열 디스플레이 길이 및 -e trace = xxx 추적 시스템 호출 유형을 지정합니다. Strace는 성능 오버 헤드를 가져오고 생산 환경에서 장기 운영에 적합하지 않다는 점에 유의해야합니다.
Strace는 Linux의 강력한 진단, 디버깅 및 교육 도구입니다. 시스템이 실행중인 시스템이 무엇을하는지 알 수 있습니다. 예상대로 작동하지 않는 이유를 이해하려고 할 때 매우 도움이 될 수 있습니다.
strace
달리면 어떻게됩니까?
Strace와 함께 프로그램을 실행하면 해당 프로세스에 첨부되고 시스템이 호출하는 모든 시스템을 가로 채 웁니다. 여기에는 파일 열기, 소켓 읽기 또는 쓰기, 메모리 할당 등이 포함됩니다. 그런 다음 Strace는 인수 및 반환 값과 함께 각 호출을 인쇄합니다.
이는 후드 아래에서 ptrace()
시스템 호출을 사용하여 작동합니다. Linux 커널에서 제공하는 특수 인터페이스 인 한 프로세스 (예 : Strace)가 다른 프로세스 (응용 프로그램과 같은)를 제어 할 수 있습니다. 따라서 추적 프로세스가 시스템 호출을 시도 할 때마다 커널이 일시 중지하고 손을 스트레이트로 제어하여 발생하는 일을 기록 할 수 있습니다.
일반적으로 다음과 같은 출력이 표시됩니다.
execve ( "./ myprogram", [ "./myprogram"], 0x7ffec13c020) = 0 brk (null) = 0x55d6e9a0d000 Access ( "/etc/ld.so.preload", r_ok) = -1 enoent (그러한 파일 또는 디렉토리 없음) Openat (at_fdcwd, "/etc/ld.so.cache", o_rdonly | o_cloexec) = 3
각 줄은 시스템 호출 이름, 통과 된 인수 및 결과를 보여줍니다.
Strace의 일반적인 사용 사례
- 디버깅 애플리케이션 : 프로그램이 클리어 로그없이 충돌하거나 매달려있는 경우 Strace는 고정되는 위치를 정확히 찾아냅니다.
- 종속성 이해 : 런타임에 프로그램이 열리는 파일 또는 라이브러리를 볼 수 있습니다.
- 성능 분석 : 반복 디스크 읽기 또는 네트워크 통화와 같은 느린 작업을 발견하십시오.
- 보안 감사 : 바이너리가 예기치 않은 파일 또는 리소스에 액세스하는지 확인하십시오.
몇 가지 일반적인 시나리오는 다음과 같습니다.
- 스크립트가 구성 파일을 열지 못합니다. Strace는 잘못된 디렉토리를보고 있음을 보여줍니다.
- 네트워크 앱이 중단됩니다 - Strace는 결코 오지 않는 소켓 연결을 기다리고 있음을 보여줍니다.
- 바이너리 SEGFAULTS - Strace는 MMAP 메모리가 올바르게 실패했음을 보여줄 수 있습니다.
Strace를 효과적으로 사용하는 방법
간단한 시작 :
strace -f mycommand
-f
플래그는 Strace에게 포크를 따르라고 지시합니다. 많은 프로그램이 어린이 프로세스를 생성하기 때문에 중요합니다.
이미 실행중인 프로세스를 다루고 있다면 사용하십시오.
strace -p PID
지정한 프로세스 ID에 Strace를 첨부합니다.
기타 유용한 플래그 :
-
-o filename
: 화면에 인쇄하는 대신 파일에 출력을 저장합니다. -
-tt
: 각 줄에 타임 스탬프를 추가하십시오. -
-T
: 각 시스템 호출에서 얼마나 많은 시간을 소비했는지 보여줍니다. -
-s
: 표시된 문자열 크기를 늘리십시오 (기본값은 짧고 때로는 충분하지 않음).
예를 들어, 장기 실행 서비스를 추적하고 출력을 저장하려면 다음과 같습니다.
Strace -f -o debug.log -p 1234
명심해야 할 한 가지 : Strace는 오버 헤드를 추가합니다. 추적에 따라 프로그램은 특히 시스템 호출이 많은 경우 속도가 느려집니다. 따라서 실제로 깊이 파고들 필요가 없다면 성능이 중요한 환경에서 의존하지 마십시오.
또한 올바르게 필터링하지 않으면 일부 시스템 호출을 놓치기 쉽습니다. 여기서 -e trace=open,read,write
같은 옵션이 유용합니다. 문제와 관련된 특정 통화에만 집중할 수 있습니다.
기본적으로 그게 다야. 출력을 읽고 어떤 깃발에 도달할지 아는 데 익숙해지면 Strace는 무대 뒤에서 무슨 일이 일어나고 있는지 알아내는 도구가됩니다.
위 내용은 Strace 명령은 어떻게 작동합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undress AI Tool
무료로 이미지를 벗다

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

Chrome의 V8 엔진을 기반으로하는 Node.js는 확장 가능한 응용 프로그램 및 백엔드 API를 구축하기 위해 제작 된 오픈 소스 이벤트 중심의 JavaScript 런타임 환경입니다. Nodejs는 비 블로킹 I/O 모델로 인해 가볍고 효율적인 것으로 알려져 있습니다.

LinuxCanRunonOnModestHardWareWithSpecificminIumpiRements.a1ghzprocessor (x86orx86_64)는 withedual-corecperececended.r AMSHOUDDBEATLEAST512MBFORCOMMAND-LINEUSOR2GBFORDESKTOPENVIRONTMENTS.DISKSPACEREQUIRESAMINIMUMOF5–10GB, 그러나 25GBISBETTERFORAD

C로 작성된 MySQL은 오픈 소스, 크로스 플랫폼 및 가장 널리 사용되는 관계형 데이터베이스 관리 시스템 (RDMS) 중 하나입니다. 램프 스택의 필수 부분이며 웹 호스팅, 데이터 분석, 인기있는 데이터베이스 관리 시스템입니다.

우분투는 오랫동안 리눅스 생태계의 접근성, 폴란드 및 힘의 요새로 서있었습니다. Codename“Plucky Puffin”Ubuntu 25.04가 도착하면서 Canonical은 다시 한 번 전달하겠다는 약속을 보여주었습니다.

MongoDB는 트래픽과 방대한 양의 데이터를 관리하기 위해 구축 된 고성능, 확장 가능한 문서 지향 NOSQL 데이터베이스입니다. MongoDB 구조 데이터는 j의 구조 데이터를 행으로 저장하는 기존 SQL 데이터베이스와 달리

PGADMIN 4는 오픈 소스, 강력한 및 프론트 엔드 포스트 그레스크 데이터베이스 관리 도구입니다. PGADMIN 4를 사용하면 관리자가 웹 브라우저에서 PostgreSQL 데이터베이스를 원활하게 관리하고 다른 데이터베이스 작업 중에서 SQL 쿼리를 실행할 수 있습니다. 작성되었습니다

VPN (Virtual Private Network)은 공개 네트워크를 통해 확장되는 암호화 된 터널입니다. 이를 통해 사용자는 최대한의 개인 정보 및 기밀성으로 인터넷 연결을 통해 리소스를 안전하게 탐색하고 액세스 할 수 있습니다. [당신은 또한 좋아할 수도 있습니다 : 13 최고의 VPN

Centos 프로젝트에서 Centos Stream으로 초점이 전환되면서 이제 Rhel의 상류 역할을 할 수 있도록 Centos를 대체하기위한 몇 가지 Centos 대안이 제안되었습니다. 오랜 시간 동안 Centos는 소기업에 의해 널리 채택되었습니다
