2 / 2 / 1
Регистрация: 03.05.2014
Сообщений: 56
|
|
1 | |
CoreDump gdb19.12.2018, 17:06. Показов 1021. Ответов 4
Здравствуйте, изначально падал сайт с 50 ошибкой на некоторых страницах, в errorlog писалось про супер ошибку exit signal Segmentation fault (11), сделал coredump для apache не с первого раза добился его создания, так как абсолютно не ясно как эту ошибку повторить, она не воспроизводимая....
Таки сделал coredump в момент первого краша пида, время одинаковое что в логе создания, что при создании файла ls -l -c . Открывая файл отладки так gbt --core=core Код
GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1 Copyright © 2014 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-linux-gnu". Type "show configuration" for configuration details. For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>. Find the GDB manual and other documentation resources online at: <http://www.gnu.org/software/gdb/documentation/>. For help, type "help". Type "apropos word" to search for commands related to "word". [New LWP 26168] Core was generated by `/usr/sbin/apache2 -k start'. Program terminated with signal SIGSEGV, Segmentation fault. #0 0x00007f353ee2e960 in ?? () Код
(gdb) bt #0 0x00007f353ee2e960 in ?? () #1 0x00007f353ee00238 in ?? () #2 0x00007f354609be20 in ?? () #3 0x00007f353ee1d848 in ?? () #4 0x00007f3545fa6760 in ?? () #5 0x00007f354609bdc8 in ?? () #6 0x00007f354632c578 in ?? () #7 0x00007f353ee0ed5b in ?? () #8 0x00007f3545fa6760 in ?? () #9 0x00007f353ee00220 in ?? () #10 0x00007f354632cde0 in ?? () #11 0x00007f353ee1d848 in ?? () #12 0x00007f3545fae1f0 in ?? () #13 0x00007f3545a6ade0 in ?? () #14 0x00007f353f5d3540 in ?? () #15 0x00007f353ee0ed5b in ?? () #16 0x00007f3545fae1f0 in ?? () #17 0x00007f353eebbd9d in ?? () #18 0x000000000000000b in ?? () #19 0x00007f3546081fe0 in ?? () #20 0x00007f353f5b6fdc in ?? () #21 0x00007f3545a6ad58 in ?? () #22 0x00007f353f5d3540 in ?? () ---Type <return> to continue, or q <return> to quit--- #23 0x0000000000000000 in ?? () (gdb) [1]+ Stopped gdb --core=core
0
|
19.12.2018, 17:06 | |
Ответы с готовыми решениями:
4
CodeLite ошибка failed to locate gdb! at 'gdb' gdb и си gdb + .so GDB 7.5 |
20.12.2018, 21:46 | 2 |
Я не большой специалист, но представляю следующую последовательность действий.
Вы получили адрес с критической ошибкой 0x00007f353ee2e960 это верхний фрейм стека. Вопросики напротив фреймов это значит что дебагер не может прочесть какая функция создала этот фрейм потому что программа была собрана без флагов gdb. Можно посмотреть через objdump -d binarnik дизасемблированную команду на которой был краш. Далее я бы скомпилировала программу с gdb флагами, установила брейкпойнт близкий к адресу краша. В этом может помочь и предварительный просмотр глобальных точек входа через nm. Можно установить в адрес следующего фрейма 0x00007f353ee00238 или в крайнем случае установила бы брейкпойнт в main 0x00007f353f5d3540 и прошла бы по всей программе через stepi и посмотрела бы по этому адресу какая переменная участвовала при краше (ориенитируясь на дизасемблированную команду в objdump -d) Сразу после запуска gdb я бы включила tui для удобства работы tui enable и вывела на экраны асемблерный код (для сравнения с objdump -d) и все общие регистры la asm la r fs p Главное core dump сказал мне где искать ошибку! Потому что она проявляется не всегда. При установлении места краша в программе можно переключить одно окно с асемблерного кода на src код что бы точнее определить место в исходном коде программы И когда я установлю функцию в которй происходит краш можно приступать к анализу ее переменных Добавлено через 9 минут Главное то вы сделали, вы установили адрес этой ошибки
1
|
2 / 2 / 1
Регистрация: 03.05.2014
Сообщений: 56
|
|
20.12.2018, 21:55 [ТС] | 3 |
nezabudka, Спасибо за отклик, попробую! Обязательно отпишусь.
0
|
20.12.2018, 22:32 | 4 |
lalmazl, По проверке памяти очень хорошие результаты дает утилита valgrind.
Меня она однажды очень выручила. Так же посмотрите статический анализатор pvs-studio. Там предусмотрена бесплатная лицензия если проверяются оупенсорсные программы , достаточно в проверяемый файл включить заголовок из нескольких строчек. Но я думаю в вашем случае valgrind вам скажет все что нужно не прибегая к другим инструментам
1
|
2 / 2 / 1
Регистрация: 03.05.2014
Сообщений: 56
|
|
21.12.2018, 08:02 [ТС] | 5 |
Спасибо, не ожидал от девушки такого развернутого ответа, умница, вроде как я понял в чем проблема, но не уверен у меня походу prefork не правильно настроен и сбой идет при нагрузке, но это не точно, нужно время что бы ошибка воспроизвелась...
0
|
21.12.2018, 08:02 | |
21.12.2018, 08:02 | |
Помогаю со студенческими работами здесь
5
GDB Проблема с gdb. Nasm и gdb Скрипт из gdb Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |