1 Определиться где проблемное место. в проекте, в лазаре (lcl) или fpc. В последнем варианте компилятор придется собрать с отладочной инфой, проект и lcl можно ковырять включив отладочную инфу в настройках проекта.
2 Воспроизвести вылет, перед вылетом поставить точку останова в проблемном месте (в случае если проблемное место исполняется много раз, если только один - точку останова можно ставить перед запуском)
3 смотришь при обращении к чему происходит ошибка. на скриншоте вижу FLookup.ControlItems.Count
наводишь курсор на FLookup - смотришь что это такое и что там есть, потом на ControlItems, потом на Count и т.д. и так всё в этой строчке.
Если ты наводишь курсор на пропертю - отладчик неможет ее вычисллить и показать, самое простое если проперти это обертка для приватного поля - как count для fcount. тогда жмешь alt+f7 и в окне "вычислить-изменить" вбиваешь FLookup.ControlItems.FCount - смотришь что там лежит (конечно если FLookup и ControlItems не вычислимые проперти)
Так глядишь все что есть в проблемной строчке. Если поглядеть неполучается - пробуешь выполнить строку по F7 - внимательно глядя что куда уходит и что откуда возвращается.
Так шаг за шагом находишь при обращении к чему происходит вылет. Потом раскидываешь мозгами как могло получиться что это "к чему" сбоит. Оно или не инициализировано, или уже уничтожено, или испорчено - затерто чемто другим. Ищешь причину этого сбоя.
Данный процесс называется отладкой, он очень интересный)))
Также есть более простые (но не всегда срабатывающие) пути - прогнать программу под valgind`ом, прогнать програму с heaptrc. Обычно они ругаются на проблемные места.