Форум программистов, компьютерный форум, киберфорум
Ubuntu, Mint Linux
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
2 / 2 / 1
Регистрация: 03.05.2014
Сообщений: 56
1

CoreDump gdb

19.12.2018, 17:06. Показов 1021. Ответов 4

Author24 — интернет-сервис помощи студентам
Здравствуйте, изначально падал сайт с 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 ?? ()
команда bt

Код
(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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.12.2018, 17:06
Ответы с готовыми решениями:

CodeLite ошибка failed to locate gdb! at 'gdb'
Установил на двух компьютерах CodeLite. На десятке и на семерке. Выдает окошко failed to locate...

gdb и си
Допустим, такой код while(1) { scanf(&quot;%d&quot;, &amp;addr); } Запускаю gdb. Вхожу в цикл. Если...

gdb + .so
Есть динамическая библиотека, программа, к которой она линкуется. Включаю отладчик и понимаю, что...

GDB 7.5
Помогите пожалуйста как установить GDB 7.5 к MinGW.MinGW установлен. http://ftp.gnu.org/gnu/gdb/ я...

4
Эксперт NIX
3330 / 748 / 252
Регистрация: 28.06.2015
Сообщений: 1,543
Записей в блоге: 16
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
Эксперт NIX
3330 / 748 / 252
Регистрация: 28.06.2015
Сообщений: 1,543
Записей в блоге: 16
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.12.2018, 08:02
Помогаю со студенческими работами здесь

GDB
Привет)) у меня вот такая проблема, мне нужно значения регистров в конкретной строке ассемблера...

Проблема с gdb.
Всем доброго времени суток! Пишу я одну программулину, в которой используется такая функция: ...

Nasm и gdb
Помогите с проблемкой. Вот простая программа: global _start section .text _start: mov...

Скрипт из gdb
Собственно весьма глупый вопрос, как из имеющегося файла .gdb, получить скрипт на его создание?...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru