Clang fsan не показывает номера строк в трассировке стека

Дезинфектор утечки Clang++ утверждает, что в одном из моих модульных тестов обнаружена утечка памяти. Я склонен этому верить, но при осмотре не могу найти.

Я компилирую со следующими параметрами:

/usr/bin/clang++ -std=c++14 -g -Wall -Wextra -pedantic -O0 -fuse-ld=gold -fsanitize=address

Я получаю вывод, похожий на

=================================================================
==8611==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 8 byte(s) in 1 object(s) allocated from:
    #0 0x54a650  (~/tmp/tests/utest-...+0x54a650)
    #1 0x61bfc9  (~/tmp/tests/utest-...+0x61bfc9)
    #2 0x55242f  (~/tmp/tests/utest-...+0x55242f)
    #3 0x550a01  (~/tmp/tests/utest-...+0x550a01)
    #4 0x54f928  (~/tmp/tests/utest-...+0x54f928)
    #5 0x5706fa  (~/tmp/tests/utest-...+0x5706fa)
    #6 0x55b8d9  (~/tmp/tests/utest-...+0x55b8d9)
    #7 0x5e0914  (~/tmp/tests/utest-...+0x5e0914)
    #8 0x5deae8  (~/tmp/tests/utest-...+0x5deae8)
    #9 0x5c8bde  (~/tmp/tests/utest-...+0x5c8bde)
    #10 0x5b23fa  (~/tmp/tests/utest-...+0x5b23fa)
    #11 0x5a1ee9  (~/tmp/tests/utest-...+0x5a1ee9)
    #12 0x56dcdf  (~/tmp/tests/utest-...+0x56dcdf)
    #13 0x566d57  (~/tmp/tests/utest-...+0x566d57)
    #14 0x7f9fb622e60f  (/usr/lib/libc.so.6+0x2060f)

(с удалением ненужной информации).

Проблема с приведенным выше выводом заключается в том, что я получаю адреса памяти вместо номеров файлов и строк, чтобы я мог понять, что происходит!

По словам Чендлера Каррута из Clang в Google, включение отладочного вывода ('-g') должно привести к замене адресов памяти в трассировке стека номерами файлов и строк. (Вы можете увидеть, как он применяет это здесь.) Как видно из моих флагов компиляции, я высылаю отладочную информацию.

Любая идея, что я могу пренебрегать?


person Timtro    schedule 09.11.2015    source источник
comment
Это не помогает stackoverflow .com/questions/21163828/ ?   -  person fghj    schedule 10.11.2015
comment
@ user1034749 Спасибо! Я игнорировал подобные сообщения, так как они говорили о GCC. Я не знал, что GCC использует clang на серверной части для реализации своей очистки. Если вы хотите написать ответ, я приму его. В моем случае мне нужно было установить полный пакет llvm Arch Linux, который включает в себя llvm-symbolizer.   -  person Timtro    schedule 10.11.2015
comment
Нет, I hadn't realized that GCC uses clang on the back end это неправда, просто люди из google реализуют для clang и gcc одинаковую функциональность, из-за этого они очень похожи, но это неправда, что gcc использует clang или clang использует gcc. Отмечаю как дубликат.   -  person fghj    schedule 10.11.2015