-fsanitize=address -fsanitize=kernel-address

-fsanitize=address

是GCC/Clang编译器的一个选项,用于启用内存错误检测工具 AddressSanitizer。这个选项可以在运行时检测并且定位访问已释放对象、内存泄漏、缓冲区溢出等等内存相关错误。

在Qt中使用-fsanitize=address选项,可以通过修改.pro文件的QMAKE_CXXFLAGS变量来实现。具体方式是在.pro文件中添加以下行:

QMAKE_CXXFLAGS += -fsanitize=address

然后重新运行qmake和构建项目。在构建时,编译器将自动链接 AddressSanitizer 库到可执行文件中,以便运行时检测内存错误。

请注意,使用-fsanitize=address选项可能会导致程序性能下降,并且不支持所有平台和架构。在使用之前,请确保已经了解了该选项的注意事项。

-fsanitize=kernel-address

是GCC/Clang编译器的一个选项,用于在Linux内核模式下启用内存错误检测工具KASan。与用户空间的AddressSanitizer类似,KASan可检测和报告内核中的访问已释放、越界、泄漏和使用未初始化内存的问题。

当使用-fsanitize=kernel-address选项时,编译器在编译内核时会在内核代码中插入额外的代码,用于在运行时检测内存错误。如果检测到错误,KASan会输出相应的信息并且停止执行内核代码。

请注意,由于KASan会在内核代码中插入额外的代码,可能会导致程序性能下降,并且需要使用对应版本的内核和编译工具链才能使用。对于已经存在的内核,需要在编译时启用KASan,编译新的内核并且使用新的内核启动系统。

如果您发现内核程序存在问题,可以通过gdb或其他内核调试工具进行分析和调试。KASan仅用于检测错误并且输出相应的信息,不提供调试功能。

-fsanitize=hwaddress -fsanitize=kernel-hwaddress

https://gcc.gnu.org/onlinedocs/gcc-12.2.0/gcc/Instrumentation-Options.html

猜你喜欢

转载自blog.csdn.net/weixin_43466192/article/details/131200285
今日推荐