"printf 디버깅"을 위해 문자열을 strace로 보냅니다.

"printf 디버깅"을 위해 문자열을 strace로 보냅니다.

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에 의해 잘릴 수 있음).

관련 정보