【发布时间】:2018-05-16 07:14:17
【问题描述】:
Clang 有 a number of sanitizers 启用运行时检查可疑行为。不幸的是,they can't all be enabled at once.
不能在同一个程序中组合多个
-fsanitize=address,-fsanitize=thread和-fsanitize=memory跳棋。
更糟糕的是,这三个似乎都太有用了,不能忽略。 AddressSanitizer 检查内存错误,ThreadSanitizer 检查竞争条件,MemorySanitizer 检查未初始化的读取。 我很担心所有这些事情!
显然,如果我有预感存在错误,我可以据此选择消毒剂。但如果我不这样做呢?更进一步,如果我想将消毒剂用作预防工具而不是诊断工具,以指出我什至不知道的错误怎么办?
换句话说,鉴于我没有特别寻找任何东西,我应该默认使用哪个 sanitizer 进行编译?我只是期望编译和测试整个程序三次,一次每种消毒剂?
【问题讨论】:
标签: clang clang++ address-sanitizer sanitizer