0

我正在阅读《Unix 环境的高级编程》一书,并通过 i/o 缓冲部分进行工作。

为了帮助我理解缓冲,如果我可以在我的简单 c 应用程序中调试和监视缓冲区以更好地了解缓冲是如何实现的,那将很有用。我的简单 c 应用程序:

#include <stdio.h>

int main(void)
{
    FILE * fp = fopen("c:\\Users\\snowc\\Desktop\\myc.txopen", "w");
    fprintf(fp, "Testing...\n");
    fclose(fp);
    return 0;
}

在 java 环境中,我可以将 i/o 库源代码附加到我的调试会话中,然后逐步执行 i/o 库代码。是否可以在 c 中做类似的事情,以便我可以看到当我调用fprintf()或其他一些 i/o 方法时会发生什么?

使用 eclipse CDT,我可以从我的代码导航到fprintf()函数调用,但它只是将我带到 stdio.h 中似乎是宏定义的内容:

int _EXFUN(fprintf, (FILE *, const char *, ...)
               _ATTRIBUTE ((__format__ (__printf__, 2, 3))));
4

1 回答 1

2

在GNU 调试器gdb 中单步执行:

$ gdb ./yourprogram
(gdb) break main.c:6
Breakpoint set at main.c line 6
(gdb) run
Breakpoint 1 hit
(gdb) step

或者,在 strace 中运行它:

strace ./yourprogram
于 2013-09-11T21:47:37.003 回答