Я пытаюсь выполнить некоторую отладку на сервере по проблеме, которая, как я подозреваю, связана с переполнением буфера, поэтому я попытался скомпилировать свой код с помощью -fsanitize=address
, чтобы включить очистку адресов.
Он скомпилирован, и полученное программное обеспечение запускается. Тем не менее, я пытаюсь получить дамп ядра, когда средство очистки адресов обнаруживает ошибку, поскольку это почти единственный способ получить информацию из системы из-за настройки.
Я вызываю программное обеспечение с ASAN_OPTIONS=abort_on_error=1
в начале командной строки (используя для этого сценарий оболочки) и проверил, что ulimit -c
дает неограниченный результат, но он просто не создает дамп ядра.
Что мне не хватает?
Это на сервере Ubuntu 14.04 с gcc версии 4.8.4.
РЕДАКТИРОВАТЬ: sysctl kernel.core_pattern
возвращает kernel.core_pattern = |/usr/share/apport/apport %p %s %c %P
. Вероятно, это означает, что аппорт включен (по крайней мере, в какой-то форме). Тем не менее, мне удалось получить правильные файлы ядра в этой системе из утверждений и SIGFPE в программном обеспечении (отсюда подозрения в переполнении массива).
apport
? Каково значениеkernel.core_pattern
значения sysctl? - person Florian Weimer   schedule 24.07.2017