【发布时间】:2013-02-19 06:47:16
【问题描述】:
int main(int ac, char *av[])
{
printf("%d");
return 0;
}
我知道这会打印垃圾,但是如何使用gdb跟踪程序来检查垃圾值?
【问题讨论】:
-
您的代码中没有垃圾值。如果您使用未初始化的
int x;调用printf("%d\n", x);,就会出现这种情况。如果你在编译时将-Wall传递给gcc,你会得到一个警告。所以我不明白这个问题(你可以在printf和gdb中放置一个断点) -
您想知道在调用
printf之前的“垃圾值”是多少吗?或者您是否希望能够进入printf函数? -
我同意其他人的观点,即您的问题并不完全清楚。您究竟想通过使用
gdb来获得哪些仅通过运行程序无法获得的信息? -
@BasileStarynkevitch 代码中没有直接的垃圾值,但
printf调用将愉快地读取“堆栈”的值,即使没有参数存在,并打印出来。 -
@JoachimPileborg 我知道这一点,但原海报可能不知道。实际上,我不明白这个问题(并且相信原始发布者也不明白)