Tag: 地址消毒剂

如何使用clang的-fsanitize = address在调试输出中获取行号?

我正在尝试调试clang与asan检测到的内存错误,但是错过了valgrind 。 但我不能让我的clang内置二进制文件给我任何有用的调试信息。 我可以用一个简短的测试程序certificate这一点: #include #include int main(void) { char *a = malloc(8); memset(a, 0, 9); free(a); return 0; } (显然这个错误将由 valgrind ,它纯粹是为了显示clang的问题。) 我用Clang 3.4-1ubuntu1编译它,如下所示: clang -fsanitize=address -fno-sanitize-recover -o test -O0 -g test.c 果然,。/ ./test中止,我看到一些调试信息: ==3309==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x60200000eff8 at pc 0x43e950 bp 0x7fff168724f0 sp 0x7fff168724e8 WRITE of size 9 at 0x60200000eff8 thread […]