1、使用Address sanitizer自动检测Go应用中的内存错误
内存访问错误,包括缓冲区溢出和释放堆内存的使用,仍然是C和C++等编程语言的严重问题。这些错误既影响了系统的稳定性,也影响了程序的安全性,因为很多恶意代码可以通过内存错误来完成入侵。另外,内存错误的排查是困难的,很多时候导致问题的地方和发生问题的地方相隔甚远。Google旗下的开源工具Address Sanitizer可以帮助我们检测此类错误。
Address Sanitizer
Address Sanitizer(ASan)是一个快速的内存错误检测工具,它可以检测以下问题:
访问已被释放的内存
堆上缓冲区访问溢出
栈上缓冲区访问溢出
全局缓冲区访问溢出
内存泄漏
在终端运行命令go build -asan case1.go编译程序, 然后运行./case1程序会打印出下面的错误信息:
原作者:Fannie_Zhang
更多回帖