GDB, как узнать откуда прилетело исключение
От: niXman Ниоткуда https://github.com/niXman
Дата: 10.11.16 08:18
Оценка:
привет!

есть core-dump процесса.

суть такая:
процесс использует asio. исключение прилетело в io_service.run(), который обернут в try-catch. исключение вывелось в лог, и процесс начал завершаться.
но, в процессе завершения, процесс "нарвался" на SIGSEGV и, в итоге, упал.


вопрос в том, как сейчас, имея core-dump понять, откуда "прилетело" исключение?


спасибо.
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re: GDB, как узнать откуда прилетело исключение
От: niXman Ниоткуда https://github.com/niXman
Дата: 10.11.16 08:38
Оценка:
уточню: как воспроизвести баг — не понятно. в данный момент есть только core-dump процесса.
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re: GDB, как узнать откуда прилетело исключение
От: turbocode  
Дата: 10.11.16 09:01
Оценка: -1
X>вопрос в том, как сейчас, имея core-dump понять, откуда "прилетело" исключение?

gdb core dump analysis for beginners
Re: GDB, как узнать откуда прилетело исключение
От: VTT http://vtt.to
Дата: 10.11.16 09:16
Оценка:
Здравствуйте, niXman, Вы писали:

X>привет!


X>есть core-dump процесса.


X>суть такая:

X>процесс использует asio. исключение прилетело в io_service.run(), который обернут в try-catch. исключение вывелось в лог, и процесс начал завершаться.
X>но, в процессе завершения, процесс "нарвался" на SIGSEGV и, в итоге, упал.


X>вопрос в том, как сейчас, имея core-dump понять, откуда "прилетело" исключение?


Да никак. Если если исключение обработалось в catch то стек уже пропал.
Говорить дальше не было нужды. Как и все космонавты, капитан Нортон не испытывал особого доверия к явлениям, внешне слишком заманчивым.
Re[2]: GDB, как узнать откуда прилетело исключение
От: niXman Ниоткуда https://github.com/niXman
Дата: 10.11.16 09:20
Оценка:
Здравствуйте, VTT, Вы писали:

VTT>Да никак. Если если исключение обработалось в catch то стек уже пропал.

я тоже об этом подумал..
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[2]: GDB, как узнать откуда прилетело исключение
От: turbocode  
Дата: 10.11.16 12:16
Оценка:
T>gdb core dump analysis for beginners

С чем не согласен?
Re[3]: GDB, как узнать откуда прилетело исключение
От: niXman Ниоткуда https://github.com/niXman
Дата: 10.11.16 14:34
Оценка:
Здравствуйте, turbocode, Вы писали:

T>С чем не согласен?

о чем речь?
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re: GDB, как узнать откуда прилетело исключение
От: Kswapd Россия  
Дата: 10.11.16 14:59
Оценка:
Здесь уже ничего не поможет, надо воспроизводить заново, используя трюк Максима Егорушкина для определения места, откуда вылетело исключение: http://rsdn.org/forum/cpp/1029176
Автор: MaximE
Дата: 16.02.05
Re[2]: GDB, как узнать откуда прилетело исключение
От: andrey.desman  
Дата: 13.11.16 18:56
Оценка:
Здравствуйте, VTT, Вы писали:

VTT>Да никак. Если если исключение обработалось в catch то стек уже пропал.


Если стек потом не потерли тяжелыми глубокими вызовами, то какая-то инфа там таки есть. Но анализировать то, что когда-то было стеком — это то еще искусство.
Но, например, просто пробежаться по стеку и сделать addr2sym для каждых 4/8 байт может что-то дать.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.