суть такая:
процесс использует asio. исключение прилетело в io_service.run(), который обернут в try-catch. исключение вывелось в лог, и процесс начал завершаться.
но, в процессе завершения, процесс "нарвался" на SIGSEGV и, в итоге, упал.
вопрос в том, как сейчас, имея core-dump понять, откуда "прилетело" исключение?
спасибо.
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Здравствуйте, niXman, Вы писали:
X>привет!
X>есть core-dump процесса.
X>суть такая: X>процесс использует asio. исключение прилетело в io_service.run(), который обернут в try-catch. исключение вывелось в лог, и процесс начал завершаться. X>но, в процессе завершения, процесс "нарвался" на SIGSEGV и, в итоге, упал.
X>вопрос в том, как сейчас, имея core-dump понять, откуда "прилетело" исключение?
Да никак. Если если исключение обработалось в catch то стек уже пропал.
Говорить дальше не было нужды. Как и все космонавты, капитан Нортон не испытывал особого доверия к явлениям, внешне слишком заманчивым.
Re[2]: GDB, как узнать откуда прилетело исключение
Здесь уже ничего не поможет, надо воспроизводить заново, используя трюк Максима Егорушкина для определения места, откуда вылетело исключение: http://rsdn.org/forum/cpp/1029176
Здравствуйте, VTT, Вы писали:
VTT>Да никак. Если если исключение обработалось в catch то стек уже пропал.
Если стек потом не потерли тяжелыми глубокими вызовами, то какая-то инфа там таки есть. Но анализировать то, что когда-то было стеком — это то еще искусство.
Но, например, просто пробежаться по стеку и сделать addr2sym для каждых 4/8 байт может что-то дать.