Чаще всего не в программе, а в базе, и это важно для правильной постановки вопроса. Пока программа не отвечает, снимают снимок её состояния и смотрят, чем заняты потоки: ждут ли они ответа базы, встали ли на общей блокировке, заблокировали ли друг друга. Два-три снимка подряд отвечают, стоит работа или идёт медленно.
Если ожидание пришло со стороны базы, дальше смотрят уже её: какие соединения удерживают блокировку, какая операция её поставила, есть ли долгие запросы. По системам на Delphi типична ситуация, когда одно рабочее место держит открытой длинную операцию, а все остальные ждут его.
Вывод сопровождают описанием сценария, при котором зависание воспроизведено, и числом одновременных пользователей. Соответствует ли это условиям эксплуатации из задания, оценивает суд.