URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 4843
[ Назад ]

Исходное сообщение
"Подскажите пожалуйста как проанализировать core дамп"

Отправлено ssbb , 15-Ноя-05 00:02 
Подскажите пожалуйста как проанализировать core дамп, если приложение многопоточное

я делаю

#gdb prog
...
(gdb) core core
...

после этого в месте, где должны быть имена функций и  строки кода стоят вопросительные знаки
свое приложение (генерирующее core) компилирую примерно так
#g++ -g -o $(NAMWE) $(INC) $(LIBDIR) $(LIB)  $(NAMWE).cpp
Там еще Qt окошки подключиются (если это принципиально) ...


Содержание

Сообщения в этом обсуждении
"Подскажите пожалуйста как проанализировать core дамп"
Отправлено horsh , 20-Ноя-05 19:41 
>Подскажите пожалуйста как проанализировать core дамп, если приложение многопоточное
>
>я делаю
>
>#gdb prog
>...
>(gdb) core core
>...
>
>после этого в месте, где должны быть имена функций и  строки
>кода стоят вопросительные знаки

попробовать не gdb, а dbx из Sun Studio
у него с многопоточностью проблем нет.

чем анализировать кору, имеет смысл
просто запустить приложение под dbx
и когда оно рухнет все может стать гораздо яснее.

>свое приложение (генерирующее core) компилирую примерно так
>#g++ -g -o $(NAMWE) $(INC) $(LIBDIR) $(LIB)  $(NAMWE).cpp
>Там еще Qt окошки подключиются (если это принципиально) ...

Если падение внутри QT -- то можно пересобрать QT с -g
и проверить с использованием дебажного варианта библиотеки.

Можешь запостить стек трейс?


"Подскажите пожалуйста как проанализировать core дамп"
Отправлено ssbb , 22-Ноя-05 20:47 
Спасибо за ответ.

В каком месте валится программа я выяснил (в этот раз).
Моя проблема в том, что я не смогу легко выяснить в каком месте cвалится программа в других случаях...
Например, в современных Линуксах я не могу найти где располагается core файл (когда падает программа) (где его искать ?) (раньше он был в каталоге из которого запускаешь программу)

Я перехватываю 11 сигнал, а затем делаю siglongjmp, чтобы не сваливалась программа. Можно ли как-нибудь узнать какая инструкция выполнялась перед вызовом 11 сигнала ?

В винде есть отладочные библиотеки и есть релизные. В линуксе существует такое деление ? И нужно ли как-то специально подключать отладочные библиотеки ?

> Можешь запостить стек трейс?

Что такое стек трейс. Если это то, что вызвается в gdb путем bt, то там у меня одни вопросительные знаки (сейчас у меня проблемного кода нет, просто нужно научиться отлаживать многопоточные программы штатными средствами (которые всегда есть под рукой в Линуксе (во всех версиях))).


"Подскажите пожалуйста как проанализировать core дамп"
Отправлено horsh , 22-Ноя-05 21:17 

>Например, в современных Линуксах я не могу найти где располагается core файл
>(когда падает программа) (где его искать ?) (раньше он был в
>каталоге из которого запускаешь программу)

locate core

или он может не создаваться воовсе.

проверь "ulimit -c"

>>Я перехватываю 11 сигнал, а затем делаю siglongjmp, чтобы не сваливалась программа.
>Можно ли как-нибудь узнать какая инструкция выполнялась перед вызовом 11 сигнала
>?

man sigaction

>В винде есть отладочные библиотеки и есть релизные.
>В линуксе существует такое деление ?

собрана либа с -g -- отладочная
собрана без -- релизная.
Есть сорцы -- пересобрал без оптимизации и с -g --
-- вот тебе и отладочная QT

>И нужно ли как-то специально подключать отладочные библиотеки ?

man ld #в частности LD_LIBRARY_PATH

>
>
>> Можешь запостить стек трейс?
>
>Что такое стек трейс. Если это то, что вызвается в gdb путем
>bt, то там у меня одни вопросительные знаки

собери свою программу с -g, без оптимизации и возможно будет лучше.

вопросительные знаки могут быть по разным причинам.
например на x86_64 с "omit-frame-pointer"

> (сейчас у меня
>проблемного кода нет, просто нужно научиться отлаживать многопоточные программы штатными средствами
>(которые всегда есть под рукой в Линуксе (во всех версиях))).

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

если хочется стабильности и штатных средств goto solaris.



"Подскажите пожалуйста как проанализировать core дамп"
Отправлено sandy , 07-Дек-05 15:50 
>если хочется стабильности и штатных средств goto solaris.

А чем FreeBSD не стабильна?