debugging 在lldb中使用`expr`命令计算表达式时,如何查看printf输出?

gc0ot86w  于 2023-10-24  发布在  其他
关注(0)|答案(1)|浏览(151)

假设我在一个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)
kognpnkq

kognpnkq1#

STDOUT是行缓冲的。你还没有发出一个换行符。尝试:

(lldb) expr (void) fflush(0)

你应该看到输出。或者让foo是"test\n"

相关问题