在glibc中跟踪printf()的代码

时间:2012-01-26 15:00:37

标签: c printf glibc tracing

我已下载glibc(GNU c库)的源代码,版本为2.15.90。我正在追踪printf()函数的代码。我使用工具cscopectags来浏览代码。以下是我遍历以了解printf()函数的路径。 (这里,我只是提到函数调用): -

1. Opening file "glibc/stdio-common/printf.c"
2. int __printf (const char *format, ...)
3. __extern_always_inline int vfprintf (FILE *__restrict __stream, const char *__restrict __fmt, _G_va_list __ap)
4. int attribute_hidden __vfprintf_chk (FILE *s, int flag, const char *fmt, va_list ap)
5. int attribute_compat_text_section __nldbl___vfprintf_chk (FILE *s, int flag, const char *fmt, va_list ap)

一旦我达到函数\__nldbl___vfprintf_chk(),就会调用__vfprintf_chk(),因此最后2个函数(在第4点和第5点中提到)互相调用。我哪里出错了?

1 个答案:

答案 0 :(得分:3)

我看到没有这样的电话,printf快速跳转到vfprintf,这就是我说你的源代码浏览器正在运行的实际工作,glibc是非常宏观密集的。