我正在阅读“Unix环境高级编程”一书,并通过i / o缓冲部分。
为了帮助理解缓冲,如果我可以在简单的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))));
答案 0 :(得分:2)
在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