在 lldb 中使用 `expr` 命令评估表达式时如何查看 printf 输出?

How can I see printf output when evaluating an expression using the `expr` command in lldb?

假设我在 C 程序中有一个函数 test.c 如下所示:

#include <stdio.h>
char* foo = "test";
void print_foo(void)
{
    printf("%s", foo);
}
main() {  }

我这样编译 运行 test.c:

gcc -g -o test test.c
chmod 755 test && lldb -s <(echo "b main\nr") test

但是,如果我然后 运行 expr print_foo() 没有字符串输出发生:

(lldb) expr print_foo()
(lldb)

STDOUT 是行缓冲的。您还没有发出换行符。尝试调用 (lldb) expr (void) fflush(0)

您应该会看到输出。或者让 foo 成为 "test\n".