LINUX.ORG.RU

Отладка приложения с большим количеством процессов (fork)


1

3

Есть приложение, которое работает на 24-х ядерной системе и создает 24 процесса соответственно, привязывая каждый к своему собственному ЦПУ. В какой-то момент, под большой нагрузкой, программа вылетает в SIGSEGV, кто-то перетер кусок памяти расшаренной между процессами (shmget, shmat). На меньшем количестве процессов проявить не удается. Как можно запустить это под gdb, с установкой watches по адресу и посмотреть кто это портит память? Приаттачится ко всем child и делать watch? Или можно элегантнее?

Ответ на: комментарий от anonymous

Не подходит, мне и за родительским надо следить

«The new process is debugged after a fork. The parent process runs unimpeded.»

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

В коре уже порченая память, а кто испортил фиг знает. Мне надо watchpoint на запись в память где лежит неизменяемая констант. С одним процессом это легко делается.

piroflip
() автор топика

Может быть valgrind поможет найти ошибки в коде даже без явного проявления.

Elyas ★★★★★
()

Обычно логирование помогает. Даже самое простое - логирование malloc позволяет сильно сузить поиск подобных проблемных мест.

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