最近写代码, 遇到了一个illegal instruction, 然后后面的程序没有打印出预期的log, 这个log是必然会打印的, 怎么就没有打印呢?
我的机器并没有开启core dump的生成开关, 所以只看到了illegal instrction, 联想到之前碰到的案例, 估计是core dump了, 于是打开core dump开关, 再次运行一下, 果然就提示core dump了。
然后, 我猜测编译的时候肯定有提示, 搜索了一下编译信息中的abort, 果然有, 于是去对应的代码处看了一下, 果然有问题, 是printf函数打印的时候, 忘了加.c_str(0, 这个我们已经说过多次了, 故不再赘述。
话说回来, 第一次遇到illegal instrction的时候, 我还纳闷半天, 然后以为是程序打印的结果, 在程序中搜索这个关键字, 没有。 于是以为是基础库中打印的, 用strings看了一下, 也没有。 现在想来, 哭笑不得。
对了, 以前遇到这个问题, 怎么没有看到我的博客总结呢?奇怪! 好的, 今天补上。