发送字符串到 strace 进行“printf 调试”

发送字符串到 strace 进行“printf 调试”

虽然 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 截断)。

相关内容