Просто хотел исправить ошибку, с которой я столкнулся в этом ответе.
Обратите внимание, что instanceof
исключает либо (obj), либо имя класса без кавычек
$images instanceof Illuminate\Database\Eloquent\Collection
Также интересно, что с instanceof
по is_a
существует разница скорости и производительности, но это, вероятно, не относится к вам, если вы похожи на меня и в первую очередь искали ответ на этот вопрос.
Можно использовать модульный отладчик Соляриса, mdb, или dbx. mdb идет с SUNWmdb (или SUNWmdb x для версии на 64 бита) пакет.
файл ядра А является изображением Вашего рабочего процесса в то время, когда это отказало.
В зависимости от того, было ли Ваше приложение скомпилировано с флагами отладки или нет, Вы будете в состоянии просмотреть изображение стека, следовательно знать, какая функция вызвала ядро, для получения значения параметров, которые были переданы той функции, значению переменных, выделенных зон памяти...
На недавних solaris версиях, можно настроить то, что базовый файл будет содержать с командой coreadm; например, у Вас могут быть сегменты расширенной памяти, к которым был присоединен процесс.
Относятся к документация MDB и dbx документация . карта справочника GDB также полезна, как только Вы знаете основы GDB.
Я предполагаю, что любой ответ на этот вопрос должен запуститься с простого рецепта:
Для dbx, рецепт:
% dbx a.out core
(dbx) where
(dbx) threads
(dbx) thread t@3
(dbx) where
Если бы дамп ядра из программы, Вы записали или создали, то используйте, какой бы ни отладчик Вы обычно использовали бы для отладки запущенного приложения. Они должны все быть в состоянии загрузить базовые файлы. Если бы Вы не требовательны в отношении отладчиков, и Вы используете Солярис, я рекомендовал бы dbx. Это поможет получить последнюю версию FCS Studio Sun с патчами или иначе последнюю версию Экспресса Studio Sun. Также очень полезно, если можно загрузить базовый файл в отладчик в той же системе, где базовый файл был создан. Если код в библиотеках будет отличаться от того, когда базовый файл был создан, то отслеживание стека не будет полезно, когда это проходит библиотеки. Отладчики также пользуются библиотеками помощника ОС для понимания libthread и структур данных компоновщика во время выполнения, поэтому ЕСЛИ необходимо загрузить базовый файл на различной машине, Вы захотите удостовериться, что библиотеки помощника, установленные на ОС, соответствуют системным структурам данных в ОС. Можно узнать все, что Вы никогда не хотели знать об этих системных библиотеках в отчете, который был записан несколько лет назад.
http://developers.sun.com/solaris/articles/DebugLibraries/DebugLibraries_content.html
GDB может использоваться.
Это может дать вызов, который был предпринят до дампа.
http://en.wikipedia.org/wiki/GDB
Наличие источника является большим и если можно воспроизвести ошибки еще лучше, поскольку можно использовать это для отладки его.
Работавший отлично для меня в прошлом.
команда pflags также полезна для определения состояния, каждый поток был в когда это выведенное ядро. Таким образом можно часто точно определять проблему.
Присоедините к образу процесса с помощью dbx отладчика:
dbx [executable_file_name] [coredump_file_name]
важно, чтобы не было никаких изменений в исполняемом файле, так как ядро было выведено (т.е. это не было восстановлено).
Вы видите отслеживание стека для наблюдения, где программа, разрушенная с dbx, управляет "где".
можно переместиться вверх и вниз по стеку с командой и "вниз" или перейти к точному стековому фрейму с "кадром [число]" с числами, замеченными в выводе "где".
можно распечатать значение переменных или выражений с "печатью [expr]" команда.
Весело проводят время.