【发布时间】:2018-01-21 13:19:46
【问题描述】:
我想调试 printf 函数,所以当我进入 printf 函数(gdb 调试器)时,它显示了这个:
__printf (format=0x80484d0 " my name is Adam") at printf.c:28
28 printf.c: No such file or directory.
这是什么意思?
当我再次开始 step 时,就会有更多这样的语句。
请帮助我理解这一点。
【问题讨论】:
-
为什么要调试printf?你认为那里隐藏着错误吗?
-
您应该假设系统提供的函数,尤其是诸如
printf()之类的核心函数是没有故障的,并且问题出在您使用它的代码中,而不是函数本身。如果您使用的是现代编译器,请确保您使用尽可能多的警告选项进行编译,并且在出现任何警告时甚至不要尝试运行代码。 (使用 GCC,我要求gcc -O3 -g -std=c11 -Wall -Wextra -Werror -Wmissing-prototypes -Wstrict-prototypes …干净,即使是来自 SO 问题的代码。有时来自 SO 的代码必须区别对待,但不经常。) -
没有调试版本的库吗?
-
你的操作系统是什么?您需要安装“glibc-debug”包。确切的包名称取决于您使用的操作系统。
-
如果您仍然好奇(并且稍微偏离主题),请阅读此博客:blog.hostilefork.com/where-printf-rubber-meets-road 非常详细地了解
printf最终如何写出一个字符。
标签: c linux debugging gdb libc