LINUX.ORG.RU

seg fault и нормальный запуск в gdb


0

2

Все здрасте, какая-то ерунда происходит, не могу понять откуда вываливается segmentation fault, через gdb программа всегда запускается нормально и выполняется правильно, но когда обычно запускаю, она иногда уходит в segmentation fault, но иногда бывает и нормально запускается. Как выяснить в чем проблема?

★★★

Как выяснить в чем проблема?

Взять исходники и выяснить же.

Ну как вот отвечать на такой вопрос!

У вас где-то что-то работает с невыделенной областью памяти или работаете с уже удаленным объектом.

grondek ()

наверняка, в небрежной работе с shared данными из разных потоков .
а вообще, телепаты в отпуске.

aol ★★★★★ ()

Прогоните под valgrind - он выдаст кучу полезной информации.

grondek ()

вангую пост в Development «Как включить коредампы и открыть их в gdb»

nerdogeek ()
Ответ на: комментарий от i-rinat

согласен с valgrind + отладочный вывод сначала общий а когда найдешь проблемное место уже детально

SherKhan ()
Ответ на: комментарий от i-rinat

Плюсую valgrind

Для поиска проездов по памяти еще крут gcc-4.8.1-fsanitize=address

По сравнению с тормозным валгриндом он просто ацки быстр!

AF ★★★ ()

Возможно у тебя неинициализированная локальная переменная. Ищи.

m0rph ★★★★★ ()
Последнее исправление: m0rph (всего исправлений: 1)
Ответ на: комментарий от trupiko

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

Int64 ★★★ ()

ulimit -c unlimited

./prog

gdb -c core

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

Для поиска проездов по памяти еще крут gcc-4.8.1-fsanitize=address

У gcc оно только недавно в 4.8 появилось, а можно и llvm/clang-3.1, 3.2, 3.3.

Но оно же ничем не поможет, т.к. проблема у ТС возникает случайно, что, скорее всего должно быть связано с потоками.

gag ★★★★★ ()

address sanitizer или valgrind помогут тебе

annulen ★★★★★ ()

Int64

Здравствуйте, вы писали в 2011 году: «Здравствуйте, вот пишу программу, на мой взгляд, если делать ее платной можно не плохо заработать, но хочет сделать с открытым исходным кодом, чтобы программа развивалась. Но как при так получить прибыль от программы?». Никак не мог ответить на ваше сообщение на том форуме, поэтому отвечаю на этом. Я могу кое-что подсказать, по этому поводу: если вы хотите получать доход от своей программы, - она должна быть нужной прежде всего вам, если вы ею пользуетесь активно, и ею рано или поздно заинтересуются; если вы хотите ее развивать, то она должна быть тоже нужной прежде всего вам, иначе она вряд ли будет активно развиваться. только для программы с открытым кодом нужна поддержка, но продукт должен стоить поддержки, за которую можно заплатить деньги.

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

но хочется уже по феншую делать

по феншую не надо быдлокод писать. Тогда и отладка будет не нужна.

(к сожалению, это не сразу получиться).

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