最近在工作中遇到一个比较奇怪的现象,同样的一段程序,使用gcc与clang进行编译,最后的运行结果却不一致。
当时真是一脸懵逼,不知道咋搞了。后来老板告诉了一个方法,特意在此把它记录下来,方便以后查阅。
-
用gcc和clang分别编译一套代码,依次替换.o文件,如依次用gcc编译出的.o文件替换clang编译出的.o文件,对替换后的运行结果,查看结果是否一致。这也可以确定出是由哪一个文件导致的差异。接下来需要确定具体哪个方法导致结果出现差异。
-
将文件中的方法通过二分法的方式,分别在两个文件中实现,分别用gcc和clang编译编译这两个文件,替换后观察结果。从而最终确定是哪个方法导致了结果出现偏差。
网友评论