Как регистрировать ошибки, выданные Google AddressSanitizer, в файл журнала

AddressSanitizer по умолчанию выбрасывает все ошибки в оболочку, поэтому я попытался запустить сборку ASAN с помощью следующей команды;

>MCTester_ASAN>asan.log

==15619==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x61400000f9d0 at pc 0x46cff2 bp 0x7fffc062cb90 sp 0x7fffc062cb88
#0 0x46cff1 in heapOutOfBoundWrite() /home/MemTest/main.cpp:49
#1 0x46d68f in main /home/MemTest/main.cpp:116
#2 0x7fbd3365bc35 in __libc_start_main (/lib64/libc.so.6+0x1ec35)
#3 0x40a0f8 (/x01/exd10/bin/MCTester_ASAN+0x40a0f8)

ASAN:SIGSEGV
==15619==ERROR: AddressSanitizer: SEGV on unknown address 0x00000044ff97 (pc 0x00000046cff2 sp 0x7fffc062cba0 bp 0x7fffc062cbb0 T0)
#0 0x46cff1 in heapOutOfBoundWrite() /home/MemTest/main.cpp:49
#1 0x46d68f in main /home/MemTest/main.cpp:116
#2 0x7fbd3365bc35 in __libc_start_main (/lib64/libc.so.6+0x1ec35)
#3 0x40a0f8 (/x01/exd10/bin/MCTester_ASAN+0x40a0f8)

AddressSanitizer can not provide additional info.
Segmentation fault

Но я все равно получаю вывод в оболочку, а не в файл журнала.

Как записать вывод в файл журнала?

1

Решение

Но я все равно получаю вывод в оболочку, а не в файл журнала.

Это потому что AddressSanitizer положить ошибки в STDERR, но не в стандартный вывод.
Есть много ответы на ваш вопрос.

Например:

yourcommand &>filename
3

Другие решения

Других решений пока нет …