简体   繁体   English

如何在Android NDK GCC上使用AddressSanitizer?

[英]How to Use AddressSanitizer on Android NDK GCC?

I want use AddressSanitizer to check memory problems in Android Native C++ Code compile with GCC 4.9. 我想使用AddressSanitizer检查使用GCC 4.9编译的Android Native C ++代码中的内存问题。

so, I set 所以,我设定

SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}  -g1 -fsanitize=address -fno-omit-frame-pointer")
SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g1 -fsanitize=address -fno-omit-frame-pointer")
SET (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fsanitize=address -static-libasan")

in my CMakeLists.txt file. 在我的CMakeLists.txt文件中。

but I got an error: 但我得到一个错误:

ld.exe: error: cannot find -lasan",i find in NDK directory,i do not find libasan.so ld.exe:错误:找不到-lasan“,我在NDK目录中找到,我找不到libasan.so

Is NDK GCC different from NDK Clang? NDK GCC是否与NDK Clang不同? in NDK,just Clan Support AddressSanitizer? 在NDK中,只是氏族支持AddressSanitizer?

You can't use ASAN with GCC in the NDK. 您不能在NDK中将ASAN与GCC一起使用。 Those libraries were never shipped. 这些库从未发行。 ASAN is supported with Clang, and GCC is not supported at all in current NDKs. ASAN支持铿锵,而GCC是不是在当前NDKs支持在所有

Is NDK GCC different from NDK Clang? NDK GCC是否与NDK Clang不同?

In the same way that non-NDK GCC is different from non-NDK Clang, yes. 与非NDK GCC与非NDK Clang相同,是的。 They're different compilers. 他们是不同的编译器。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM