Кроме того если у вас в words[i-1] при создании нового массива окажется число - то будет создан массив из этого количества undefined'ов. Лучше: dictionary[words[i]] = [words[i-1]]
Посмотрите в сторону «Compuware dynaTrace AJAX Edition».
Это не совсем то, что вы описали, но позволяет детально разобрать процесс выполнения кода и найти проблему.