Отладка основных файлов, сгенерированных на коробке клиента

Мы получаем основные файлы от запуска нашего программного обеспечения на коробке Клиента. К сожалению, потому что мы всегда компилировали с -O2without отладка символов привела к ситуациям, когда мы не могли понять, почему это происходит сбой, мы изменили сборки так, что теперь они генерируют -g и -O2 вместе. Затем мы советуем клиенту запустить двоичный файл -g, чтобы его было легче отлаживать.

У меня есть несколько вопросов:

What happens when a core file is generated from a Linux distro other than the one we are running in Dev? Is the stack trace even meaningful? Are there any good books for debugging on Linux, or Solaris? Something example oriented would be great. I am looking for real-life examples of figuring out why a routine crashed and how the author arrived at a solution. Something more on the intermediate to advanced level would be good, as I have been doing this for a while now. Some assembly would be good as well.

Вот пример сбоя, который требует, чтобы мы сказали Клиенту получить -g ver. двоичного файла:

Program terminated with signal 11, Segmentation fault.
#0  0xffffe410 in __kernel_vsyscall ()
(gdb) where
#0  0xffffe410 in __kernel_vsyscall ()
#1  0x00454ff1 in select () from /lib/libc.so.6
...
<omitted frames>

В идеале, я бы хотел выяснить, почему именно произошло сбой приложения - я подозреваю, что это повреждение памяти, но я не уверен на 100%.

Удаленная отладка строго запрещена.

Спасибо

Ответы на вопрос(4)

Ваш ответ на вопрос