-
-
[原创]android-ndk-r12版本编译器release优化错误
-
发表于:
2016-10-9 19:07
6382
-
[原创]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 https://dl.google.com/android/repository/android-ndk-r12-linux-x86_64.zip &&
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函数进行赋值也没问题,只有用等号赋值会出现问题
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)