Если вам повезет, вы можете запустить свой код в отладчике, пока он не замерзнет, а затем остановите его, чтобы найти строку кода, которая нарушает работу. Но если бы это было так просто, вы бы, наверное, не просили совета. : -)
Две стратегии, которые можно использовать вместе, это «разделяй и властвуй» и «оставляйте хлебные крошки».
Разделяй и властвуй: Закомментируй все более крупные части своего кода. Если он по-прежнему зависает, вы сократили объем кода, который может быть ответственен за его остановку. Предупреждение: в конечном итоге вы закомментируете некоторый код, и программа не остановится. Это не означает, что последний бит кода обязательно отвечает за остановку; просто как-то вовлечено . Положи его обратно и закомментируй что-нибудь еще.
Оставить хлебные крошки: Заставьте вашу программу сообщать вам, где она находится и что она делает во время выполнения. Отобразите сообщение, добавьте в файл журнала, сделайте звук или отправьте пакет по сети. Является ли путь выполнения, как вы ожидали? Каково было последнее, что он делал, прежде чем замерз? Опять же, имейте в виду, что последнее сообщение, возможно, пришло из другого потока, чем тот, который отвечает за зависание программы, но по мере приближения к причине вы будете настраивать, что и где регистрирует код.