GCC中的sanitize
阅读数:234 评论数:0
跳转到新版页面分类
C/C++
正文
编译器中的sanitize来自于google的开源sanitizers项目,后GNU将该工具加入到GCC编译中,是查找隐藏Bug的利器。
-fsanitize=address
开启AddressSanitizer,一个快速的内存错误检测工具。
-fsanitize=kernel-address
为Linux kernel开启AddressSanitizer,KernelAddressSanitizer(KASAN)是一个动态内存错误检测工具。
-fsanitize=pointer-compare
指针操作的比较操作工具(<,<=,>,>=)
-fsanitize=pointer-subtract
指针操作数的比较操作工具(-)
-fsanitize=thread
开启ThreadSanitizer,一个快速的临界区域竞争检测工具
-fsanitize=lead
开启LeakSanitizer,一个内存泄露检测工具。
相关推荐
prolog和epilog其实就是两段固定的代码,当编译器对程序进行编译的时候就会生成两段代码,然后编译器会在每一个函数的开头塞入prolog代码,在每个函数的结尾塞入epilog代码。
1、tail call
在函数f中调用函数b,如果这个调用是函数f中执行的最后一条指令,那么这个调用就称为tail call。
<pre class="language
一、linux kernel与常规C项目的区别
1、Linux内核是一个非常大的项目,所以需要我们有选择的进行代码索引。
2、Linux内核是架构相关,但是我们一般只关注于某一个选定架构,所以不需要索