在使用Objective-C语言的项目中,我在[[Other C Flags]中添加[C0:
-fsanitize-coverage=trace-pc-guard
然后我在项目中添加两个方法,如下所示:
所以我可以获得所需的信息。
void __sanitizer_cov_trace_pc_guard_init(uint32_t *start, uint32_t *stop) { static uint64_t N; // Counter for the guards. if (start == stop || *start) return; // Initialize only once. printf("INIT: %p %p\n", start, stop); for (uint32_t *x = start; x < stop; x++) *x = ++N; // Guards should start from 1. } void __sanitizer_cov_trace_pc_guard(uint32_t *guard) { if (!*guard) return; void *PC = __builtin_return_address(0); char PcDescr[1024]; printf("guard: %p %x PC %s\n", guard, *guard, PcDescr); }
在项目中,我也设置了
swift
。并在Other C Flags
中添加-sanitize-coverage=func
,-sanitize=undefined
Other Swift Flags
但我收到一个错误:
Undefined symbol: ___sanitizer_cov_trace_pc_guard_init