在 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".
假设我在 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".