Windows에는 명령줄 버전의 strace가 있지만 사실상 Windows의 strace에 해당하는 GUI는 Sysinternals procmon입니다. 파일, 레지스트리, 네트워크 및 기타 시스템 호출을 볼 수 있게 하는 것 외에도 procmon을 사용하면 다음을 수행할 수 있습니다.간단한 문자열을 보내세요허용하다printf() 디버깅.
Unix에서 동등한 API 호출을 수행하여 임의의 메시지를 strace 출력으로 보낼 수 있습니까?
답변1
고정관념에서 벗어나 생각해보면, write()
쓰기 작업을 수행하지 않는 파일 설명자를 사용하여 호출할 수 있습니다. 예를 들어,
int main()
{
int d = open("/dev/null", 0);
write(d, "hello world", 11);
}
내 시스템에서 생성된 strace 출력의 일부는 다음과 같습니다.
open("/dev/null", O_RDONLY) = 3
write(3, "hello world", 11) = -1 EBADF (Bad file descriptor)
이는 짧은 메시지의 경우 충분합니다(더 긴 메시지는 strace에 의해 잘릴 수 있음).