Как я могу найти местоположение “Индекса списка за пределы” ошибкой в Delphi

Если Вы знаете, что собираетесь нуждаться в маркере CSRF для запросов Ajax, можно всегда встраивать его в HTML где-нибудь; тогда можно найти его через JavaScript путем пересечения DOM. Таким образом, у Вас все еще будет доступ к маркеру, но Вы не представляете его через API.

Для помещения его иначе: сделайте это через шаблоны Django - не через диспетчера URL. Это намного более безопасно этот путь.

10
задан Glorfindel 1 April 2019 в 16:59
поделиться

5 ответов

Включена ли «Остановка при исключениях Delphi»? (Tools \ Debugger Options \ Language Exceptions [Delphi7]) В противном случае он не сломается в вашем исходном коде.

Также убедитесь, что EListError отсутствует в вашем списке «Типы исключений, которые следует игнорировать». Этот список также находится в Tools \ Debugger Options \ Language Exceptions (Delphi 7).

11
ответ дан 3 December 2019 в 14:53
поделиться

madExcept (бесплатный) или EurekaLog (платный) может помочь. Вы можете настроить их для отображения / отправки по электронной почте трассировки стека при возникновении ошибки. Я использую EurekaLog во всех своих проектах, и он бесценен для исправления подобных вещей.

9
ответ дан 3 December 2019 в 14:53
поделиться

Эй, вам не нужны дополнительные инструменты для отслеживать это! :)

Просто запустите ваше приложение под отладчиком и убедитесь, что "Остановить при исключениях Delphi" (или как там это называется в вашей версии Delphi) включено ВКЛ .

Когда возникает исключение - там будет уведомление от отладчика. Нажмите кнопку «ОК» / «Отладка» и просто просмотрите стек вызовов. Окно стека вызовов отображается автоматически в последней версии Delphi. Если не видите - идите в «Просмотр» / «Отладка Windows» / «Стек вызовов».

Вот и все. Стек вызовов укажет вам точное место проблемы . Никаких дополнительных инструментов не требуется.

Эти инструменты (EurekaLog, JCL или madExcept) необходимы, если вы распространяете свою программу среди пользователей и хотите собирать отчеты об ошибках на стороне клиента. Т.е. нет отладчика для проверки проблемы.

8
ответ дан 3 December 2019 в 14:53
поделиться

Поскольку это ошибка RTL / VCL, вы часто добиваетесь лучшего поведения прерывания / стека вызовов, если включаете Debug DCU (и перестраиваете).

3
ответ дан 3 December 2019 в 14:53
поделиться

Любые намеки на ваш приложение делает, когда это происходит? Длинная петля? Нажатие кнопки?

Когда приложение останавливается, и вы смотрите в окно отладки стека вызовов, можете ли вы отследить обратный вызов до последнего вызова из вашего кода? Стек вызовов не сообщит вам все условия, но может сузить местоположение.

Как только вы сузите круг вызовов, такой инструмент для ведения журнала, как CodeSite , может быть действительно полезным. Например, я часто записываю переменные управления циклом, чтобы выяснить, какая итерация происходит последней перед ошибкой, тогда это вопрос идентификации вероятных подозреваемых.

0
ответ дан 3 December 2019 в 14:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: