Windows 용 Systrace


86

Systrace 또는 최소한 strace 와 동등한 Windows를 찾고 있습니다. 나는 StraceNT에 대해 알고 있지만 더 많은 대안이 있는지 궁금합니다. 구체적으로 시스템 호출 정책을 프로그래밍 방식으로 시행 할 수있는 특정 방법을 찾고 있는데, 이는 적극적으로 중지하는 것이 아니라 사실 이후 일 수 있습니다.

현재이를 수행하는 좋은 방법이 있습니까?


답변:


27

3
그러나 syscall이 아닌 라이브러리 호출을 캡처하기 때문에 strace보다는 ltrace와 비슷합니다.
Michael

@BrunoMartinez : strace를 사용하기 위해 메모리 주소를 지정할 필요가 없습니다.
user2284570

40

몇 가지 옵션 :

프로세스 모니터

Windows 7에 내장 된 도구에 대한이 문서도 참조하십시오.

핵심 OS 도구


3
방금 ProcessMonitor를 사용하여 프로세스가 중단 된 이유를 알아 냈습니다. 삭제할 수없는 파일에 액세스하려고했습니다. ProcMon 없이는 절대 알아 내지 못했을 것입니다.
Jamie Cook

2
Linux에서 strace를 꽤 많이 사용하고 NANT에서 발생한 문제를 해결하기 위해 Windows에서 유사한 도구를 찾는 동안이 질문을 보았습니다. 나는 프로세스 모니터를 시도하고 Nant.exe 만 포함하고 다른 모든 것을 제외하도록 필터를 설정하고 문제가있는 곳에서만 레지스터 액세스에 대한 필터를 설정하고 내가 겪고있는 문제를 빠르게 파악했습니다. Process Monitor를 적극 권장합니다.
hshib

@ djhaskin987 : 제 경우에는 일부 파일을로드하는 프로그램이 있습니다. ʀᴀᴍ에 버퍼링하고 (그래서 핸들이 남지 않음) 충돌합니다. 핸들이 없기 때문에 프로세스 모니터는 도움이되지 않습니다.
user2284570

@hshib : 프로세스 모니터의 문제는 프로세스가 파일에 액세스하는 데 핸들이 필요하지 않다는 것입니다. 따라서 내 경우 (어떤 구성 파일이 충돌을 일으키는 지 확인하려고 시도) , 도움이되지 않습니다.
user2284570

15

Dr. Memory ( http://drmemory.org ) 도구에는 대상 응용 프로그램에서 수행 한 모든 시스템 호출을 인수와 함께 나열하는 drstrace라는 시스템 호출 추적 도구가 함께 제공됩니다. http://drmemory.org/strace_for_windows.html

프로그래밍 방식으로 시스템 호출 정책을 적용하려면 drstrace와 동일한 기본 엔진 인 DynamoRIO 도구 플랫폼 ( http://dynamorio.org ) 및 DrSyscall 시스템 호출 모니터링 라이브러리 ( http://drmemory.org/docs/page_drsyscall)를 사용할 수 있습니다. html ). 이들은 동적 이진 번역 기술을 사용하는데, 이는 약간의 오버 헤드 (정상 상태에서 20 % -30 %, 큰 데스크톱 앱 실행과 같은 새 코드 실행시 훨씬 더 높음)를 발생 시키며, 이는 귀하의 목적에 적합하거나 적합하지 않을 수 있습니다.


11

API 모니터 는이 목적에 매우 유용합니다.


이것은 훌륭한 프로그램이며, 자세한 함수 매개 변수 / 반환 값을 보여 주며, 특정 조건이 충족 될 때 중단 점을 지정할 수 있으며, 검사를 원하지 않는 많은 프로세스에서 사용할 수 있도록 다양한 후킹 방법을 사용할 수 있습니다.
yuikonnu

6

여기에 꽤 흥미로운 기사가 ​​있습니다. 당신이 찾고있는 목표물에 맞았는지는 모르겠지만 당신이 원하는 방향으로 당신을 이끄는 것을 찾을 수있을 것 같습니다.

http://jbremer.org/intercepting-system-calls-on-x86_64-windows/


1
고마워요, 꽤 좋습니다. 나는 우리가 여전히 Windows에서 좋은 기능 strace를 멀었다 ...있어 의미 추측
static_rtti

3

strace는 cygwin 패키지의 Cygwin에서 사용할 수 있습니다 . 예를 들어 Cygwin 미러 에서 다운로드 할 수 있습니다 .

http://mirrors.sonic.net/cygwin/x86_64/release/cygwin/cygwin-2.0.2-1.tar.xz
#      |                      |                              |     |
#      +-----------+----------+                              +--+--+
#                  |                                            |
#               mirror                                       version

strace는 Cygwin DLL에 의존하지 않는 몇 안되는 Cygwin 프로그램 중 하나이므로 strace.exe원하는 위치에 복사 하여 사용할 수 있어야 합니다.


6
좋지만 다른 cygwin 프로그램에서만 작동하는 것 같습니다. 당신은 할 수 없습니다 strace notepad. 메모장을 시작하지만 시스템 호출은 캡처하지 않습니다.
Michael Fox

2
@MichaelFox : 예, cygwin1.dll에 대한 호출 만 잡습니다.
user2284570

2

Xperf를 중심으로 구축 된 여러 도구가 있습니다. 다소 복잡하지만 매우 강력합니다. 빠른 시작 가이드를 참조하세요 . Windows 성능 분석 페이지 에는 다른 유용한 리소스가 있습니다 .


4
strace는 성능과 관련이 없습니다. 프로세스가 만드는 시스템 호출을 단순히 인쇄합니다. 성능 도구는 그렇게하지 않는 것 같습니다.
얀 허덱

1

Git 에서 지원하는 strace , Michael Fox 언급으로 복잡한 Windows 소프트웨어에는 유용하지 않을 수 있습니다.


이것이 바로 Linux 프로그램입니다. Linus 소프트웨어 / 시스템 호출에서만 작동합니다.
Henk Poley

0

Mark Russinovich가 작성한 프로세스 모니터를 사용할 수 있습니다. 이것은 시스템에서 실행중인 모든 프로세스에 연결하고 프로세스가 현재 만들고있는 모든 시스템 호출을 볼 수있게 해주는 환상적인 작은 응용 프로그램입니다.

https://technet.microsoft.com/en-us/sysinternals/processmonitor.aspx


2
djhaskin987은 이전 답변에서 이미 Process Monitor를 언급했습니다. 그의 대답을 편집하고 설명을 편집해야합니다.
unforgettableidSupportsMonica
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.