c - 如何调试我的 C 应用程序的 I/O 缓冲?

标签 c io buffer

我正在通读《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 库源代码附加到我的调试 session ,然后单步执行 i/o 库代码。是否可以在 c 中做类似的事情,以便我可以看到当我调用 fprintf() 或其他一些 i/o 方法时会发生什么?

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

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

最佳答案

在 gdb 中单步执行它,GNU Debugger :

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

或者,在 strace 中运行它:

strace ./yourprogram

关于c - 如何调试我的 C 应用程序的 I/O 缓冲?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18751818/

相关文章:

c++ - Visual Studio 2010 SP1 中的 64 位整数初始化错误

找不到自定义头文件

java - 扫描仪在使用 next() 或 nextFoo() 后跳过 nextLine()?

java - 连接多个文件

c# - BufferedWaveProvider 的问题

c - 从Linux内核解释notifier.c

转换为 int 和浮点错误?

java - DataOutputStream 不发送 -1

javascript - 如何在不知道原始类型的情况下将缓冲区转换为字符串/数字/日期

c - 怀疑malloc。 C (Linux)