一条调试信息引起的bug
在别人的程序中增加调试信息如printf或syslog时,如果被打印的变量/对象涉及指针时,请确认该指针非空。 否则这条用来调试 BUG 的语句本身就是一个 BUG 。
在别人的程序中增加调试信息如printf或syslog时,如果被打印的变量/对象涉及指针时,请确认该指针非空。 否则这条用来调试 BUG 的语句本身就是一个 BUG 。
somefile.c static commands_t commands[] = { #include "commands-list.h" { 0, 0 } }; commands-list.h { "beginblock", command_beginblock }, { "capb", command_capb }, { "clear", command_clear }, ... { "x_save", command_x_save },
gcc特有的函数(在编译时不能使用"-nonstartfiles"或"-nostdlib"选项): void __attribute__ ((constructor)) my_init(void); void __attribute__ ((destructor)) my_fini(void); 移植性更好的函数(不能改变函数名): void _init(); void _fini();
今天才知道 popen 运行一个系统调用时, 通过 popen 返回的文件句柄只能读到系统调用往 stdout 的输出内容。 输出到 stderr 的内容是得不到的。 有一个办法,就是在调用命令的尾部加上 2>&1 这样的内容, 其含义为:将 stderr(2)重定向到 stdout(1)中。 例如 iwconfig eth0 这个命令,如果 eth0 不是无线网卡,运行此命令的后果是得到...
第一次遇到这个问题,执行make, make[2]: Warning: File `guide.h' has modification time 2.6e+04 s in the future make[2]: 警告:检测到时钟错误。您的创建可能是不完整的。 经过检查,是因为之前的时区设置有问题,导致一个文件的时间比当前make时间还新。 更新src中所有问题文件的时间,重新编译。 另外,注意make打印的日志的开始部分,应该有类似的...