#debugging #memory #process #pthreads #fork
#отладка #память #процесс #pthreads #форк
Вопрос:
У меня очень длинный код с несколькими процессами, и где-то в программе во время ее выполнения я получаю сообщение типа «недопустимый следующий размер (быстрый)» и некоторые цифры, которые не имеют смысла.
Я не могу запустить gdb в этом процессе самостоятельно, и я не могу выяснить, где в программе это происходит. Я помещаю printf
s влево и вправо (я также сбрасываю его с помощью fflush
, чтобы он печатался точно в это время), но все равно я не могу найти точную строку, когда это происходит!
Как следует отлаживать подобную проблему? Я был бы признателен за помощь, потому что я перепробовал все, что смог придумать.
Ответ №1:
Сначала попытайтесь найти строку с
grep -rni "invalid next" *.c
предполагая, что это все файлы c в некоторых подкаталогах. Затем вы должны увидеть, что означают эти цифры (или исправить сообщение об ошибке, чтобы оно было более значимым). Если у вас нет gnu-grep:
find -name '*.c' | xargs grep -ni "invalid next"
Ответ №2:
Похоже, что у многих людей возникает эта проблема, когда они используют функцию sizeof () для выделения неправильного объема памяти для чего-либо.
Проверьте эти потоки:
http://www.gtkforums.com/viewtopic.php?t=4819
http://www.linuxquestions.org/questions/programming-9/free-invalid-next-size-fast-c-error-729852/