LINUX.ORG.RU

Valgrind и все-все-все

 , ,


1

2

Всем доброго вечера )

Чем обычно критические ошибки в проекте ловите? Кроме Valgrind'a ничего подобного не знаю, есть еще под Линукс подобные анализаторы выполнения программ - для надежности диагностики?

Из диагностических знаю еще Cppcheck, но он немного не в тему, хотя тоже полезен.

Вообще как можно получить в программе на С++ стектрейс хотя бы до функции, вызвавшей сегфолт? Такое вообще возможно?

Всем спасибо.

В общем виде никак. Сегфолт же не от хорошей жизни случается.

mashina ★★★★★
()
Ответ на: комментарий от batbko

коредампы включи

Советую ещё добавить

kernel.core_pattern=/tmp/core_%E_%t_sig=%s_pid=%p
в файл /etc/sysctl.d/coredumps.conf. И
*   -    core  unlimited
в /etc/security/limits.d/always_create_coredump.conf

i-rinat ★★★★★
()
gdb YourCoolGameHere
run
bt

Там еще как-то можно по стеку копаться и смотреть локальные переменные.

frozenix ★★★
()

есть еще под Линукс подобные анализаторы выполнения программ - для надежности диагностики?

[gcc|clang] -fsanitize=[address|thread]

AF ★★★
()

Кроме Valgrind'a ничего подобного не знаю, есть еще под Линукс подобные анализаторы выполнения программ - для надежности диагностики?

да, собсно, его и достаточно.. утечки памяти ловит неплохо. kcachegrind удобно для профайлинга еще.

Вообще как можно получить в программе на С++ стектрейс хотя бы до функции, вызвавшей сегфолт? Такое вообще возможно?

man 3 backtrace. но он не умеет номера строк, насколько я знаю. только названия функций и оффсеты.

waker ★★★★★
()
Ответ на: комментарий от waker

что за санитайзеры

-fsanitize=....

чем именно лучше

Работают быстрее. Программу собранную специальным образом можно вполне пускать под нагрузкой и ловить редковоспроизводимые баги.

что умеют?

Всё что и valgrind и даже больше. Например, valgrind не ловит выход за пределы массивов на стеке, а -fsanitize=address ловит.

Reset ★★★★★
()
Ответ на: комментарий от Reset

да, TSan особенно охерительная штука. жаль что раньше про нее не знал :(

спасибо за наводку, поюзаю :)

waker ★★★★★
()
Ответ на: комментарий от Reset

У меня с опцией -fsanitize=address линкер не компонует с ошибкой «undefined reference _asan_report». Как на gcc, так и на clang. Версии 4.9 и 3.4 соответственно.

LongLiveUbuntu ★★★★★
() автор топика
Ответ на: комментарий от LongLiveUbuntu

Ну что за манера последнее время у людей? Разобрался со своим вопросом и ушел из треда. Разобрался - опиши как. А если через некоторое время сюда по поиску придет еще совсем зеленый юнец с тем же вопросом? Что он увидит? Только «Разобрался, спасибо».

Torvus
()
Ответ на: комментарий от Torvus

Это по поводу сообщений Reset о флаге -fsanitize=address, мне помогло.

LongLiveUbuntu ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.