В моем приложении у меня есть обработчик сигнала настройки для захвата Segfaults и печати bactraces. Мое приложение загружает некоторые библиотеки плагинов, когда процесс начинается.Проанализируйте обратную трассировку сбоя из-за неисправной библиотеки
Если мое приложение падает с Segfault, из-за ошибки в основной исполняемый двоичный файл, я могу анализировать трассировку с:
addr2line -Cif -e ./myapplication 0x4...
Это точно отображает функцию и source_file: LINE_NO
Однако как анализировать, произошел ли сбои из-за ошибки в плагине, как в обратном направлении ниже?
/opt/myapplication(_Z7sigsegvv+0x15)[0x504245]
/lib64/libpthread.so.0[0x3f1c40f500]
/opt/myapplication/modules/myplugin.so(_ZN11ICAPSection7processEP12CONNECTION_TP7Filebufi+0x6af)[0x7f5588fe4bbf]
/opt/myapplication/modules/myplugin.so(_Z11myplugin_reqmodP12CONNECTION_TP7Filebuf+0x68)[0x7f5588fe51e8]
/opt/myapplication(_ZN10Processors7ExecuteEiP12CONNECTION_TP7Filebuf+0x5b)[0x4e584b]
/opt/myapplication(_Z15process_requestP12CONNECTION_TP7Filebuf+0x462)[0x4efa92]
/opt/myapplication(_Z14handle_requestP12CONNECTION_T+0x1c6d)[0x4d4ded]
/opt/myapplication(_Z13process_entryP12CONNECTION_T+0x240)[0x4d79c0]
/lib64/libpthread.so.0[0x3f1c407851]
/lib64/libc.so.6(clone+0x6d)[0x3f1bce890d]
Как мои приложения, так и библиотеки плагинов были скомпилированы с помощью gcc и не установлены. Мое приложение при выполнении, загружает plugin.so с помощью dlopen К сожалению, авария происходит на сайте, где я не могу запустить приложение под gdb.
Исправлено в поисках ответа, но на всех сайтах, обсуждающих backtrace и addr2line, исключаются сценарии, в которых может потребоваться анализ ошибочных плагинов. Надеюсь, что какой-то добрый хак знает решение этой дилеммы и может поделиться некоторыми соображениями. Это было бы так неоценимо для других программистов.
Тонкости благодарности заранее.
Есть ли что-то особенное в этих «библиотеках плагинов» или это просто стандартные общие библиотеки? – us2012
Кроме того, вы видели этот вопрос SO http://stackoverflow.com/questions/7556045/how-to-map-function-address-to-function-in-so-files? – us2012
@ us2012 Да, я проверил эту ссылку несколько месяцев назад, а также попросил немного более ясности в деривации, см. Мой комментарий. Btw. мои библиотеки плагинов - это простые c/C++, поэтому объекты, ничего особенного в них. Искреннее спасибо за интерес. – mdk