我希望有人可以指向Linux软件,类似于Microsoft工具Application Verifier和Driver Verifier。 (它们分别是Windows应用程序和驱动程序的压力测试程序。)
Linux存在这样的事情吗?
答案 0 :(得分:4)
我根本不熟悉Application Verifier和Driver Verifier ......
对于应用程序,Valgrind非常有用,可用于检查泄漏,释放后使用,双重释放,缓冲区溢出,使用单位化数据,不安全的并发数据访问等等。
还有许多fuzzers(zzuf,fusil等等,用于测试程序对无效输入的重复性。
GCC本身有-fstackprotector
,它支持SSP(堆栈粉碎保护器,又名ProPolice); -fmudflap
,用于检测其他一些不良内存使用情况;和(与glibc
)-D_FORTIFY_SOURCE=
n 结合使用,可以对各种字符串和内存函数进行额外检查。
在Linux内核中,“Kernel hacking”菜单下有许多配置开关:
CONFIG_DEBUG_SLAB
,CONFIG_DEBUG_PAGEALLOC
等,确保分配,使用和释放内存CONFIG_DEBUG_OBJECTS
,用于检查对象的使用情况并有序释放CONFIG_PROVE_LOCKING
,分析所有可能的死锁CONFIG_DEBUG_PREEMPT
,CONFIG_DEBUG_MUTEXES
,CONFIG_DEBUG_SPINLOCK
,CONFIG_DEBUG_SPINLOCK_SLEEP
等,警告不当使用锁定CONFIG_FAULT_INJECTION
& co.,其概率导致内存分配和I / O失败