-
-
[原创]android-ndk-r12版本编译器release优化错误
-
发表于:
2016-10-9 19:07
6556
-
[原创]android-ndk-r12版本编译器release优化错误
几个月以前发现的一个bug,然后一直没写出来。今天android studio更新android ndk bundle的时候才想起来,然后用r13版本的ndk测试了一下,已经不存在这个毛病了,至于r12之前的版本,没有挨个测试,r10d版本没有这个问题。
自己的源代码出bug是常事,编译器出问题还是头一次碰到,算是给自己提个醒。
进入正题:
已测试平台:linux,mac
ndk版本:r12
bug描述:release代码优化出错,debug版结果正常
代码见附件:sample.7z
#准备部分代码,如果测试平台为mac,请自行替换为android-ndk-r12-darwin-x86_64.zip
7z x sample.7z &&
wget 1e4K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6V1L8q4)9J5k6h3N6G2L8$3N6D9k6g2)9J5k6h3y4G2L8g2)9J5c8X3q4F1k6s2u0G2K9h3c8Q4x3V1k6J5k6i4m8G2M7$3W2@1L8%4u0&6i4K6u0r3j5h3&6V1M7X3!0A6k6q4)9J5k6r3&6V1K9#2)9J5k6s2t1I4x3W2)9J5k6r3I4A6L8Y4g2^5i4K6u0V1P5o6R3$3i4K6g2X3y4U0c8Q4x3X3g2*7K9i4m8Q4x3U0k6F1j5Y4y4H3i4K6y4n7i4K6t1$3i4K6t1$3
unzip android-ndk-r12-linux-x86_64.zip
#===================================================
#release版本测试,确保已连上模拟器或者已开启开发者模式的android手机
android-ndk-r12/ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./Android.mk NDK_LIBS_OUT=./bin clean > /dev/null &&
android-ndk-r12/ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./Android.mk NDK_LIBS_OUT=./bin APP_OPTIM=release APP_ABI=armeabi > /dev/null &&
adb push bin/armeabi/third /data/local/tmp > /dev/null &&
echo -e "\n=========================\nrelease version result:" &&
adb shell su -c "chmod 755 /data/local/tmp/third && /data/local/tmp/third"
#===================================================
#debug版本测试
android-ndk-r12/ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./Android.mk NDK_LIBS_OUT=./bin clean > /dev/null &&
android-ndk-r12/ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./Android.mk NDK_LIBS_OUT=./bin APP_OPTIM=debug APP_ABI=armeabi > /dev/null &&
adb push bin/armeabi/third /data/local/tmp > /dev/null &&
echo -e "\n=========================\ndebug version result:" &&
adb shell su -c "chmod 755 /data/local/tmp/third && /data/local/tmp/third"
很蛋痛的一个问题,位于代码141行的printf只要打印内容,结果就正常了,所以说一直用输出定位bug在这里面就很让人迷茫了,有输出就正常,没输出就不正常,让我怎么分析嘛。还有就是134行开始的memcpy,用memcpy函数进行赋值也没问题,只有用等号赋值会出现问题
[培训]科锐逆向工程师培训第53期2025年7月8日开班!