Адрес Sanitizer - можно ли остановиться после N дефектов? - PullRequest
0 голосов
/ 21 февраля 2019

Я понимаю, что некоторые возможности Address Sanitizer могут различаться в зависимости от GCC;Мой интерес здесь прежде всего к GCC (в настоящее время использующему GCC 6.2 и 7.3)

Я могу использовать ASAN_OPTIONS, чтобы установить halt_on_error=0, чтобы продолжить работу после сообщения о дефекте, или установить его в 1, чтобы остановить, как толькокак сообщается о первом дефекте.

То, что я ищу, это способ остановить после N дефектов.halt_on_error=N не работает, потому что это просто двоичная настройка (вкл / выкл).

Есть ли другой способ добиться этого:

  • Когда просто запустить exe вкомандная строка, через какую-то настройку env?
  • Когда внутри отладчика - например, что-то вроде b some_asan_defect_reporting_function if (asan_defect_count == N)

Заранее благодарен за любую информацию по вышеуказанному.

Гордон

1 Ответ

0 голосов
/ 25 февраля 2019

Раньше был дополнительный флаг ASAN_OPTIONS=max_errors=N для halt_on_error, но он вызывал слишком много вопросов во время проверки кода и не имел убедительных вариантов использования, поэтому я оставил его на полпути (вы можете видеть, что он был сброшен в этот этап ).Если вы считаете, что это может быть полезно, попробуйте отправить сообщение об ошибке в Sanitizers tracker .

...