Цитата:
Сообщение от
konfet
Я локализовал то место в коде, которое в конечном счете инициирует ошибку, и куда выполнение при данном наборе условий по идее не должно "проваливаться".НО: код очень сложный, многоуровневый, этот набор условий - большой, воссоздать ситуацию и вычленить именно то условие или событие, которое привело к ошибке - трудно да и нет времени.
Прелестно!..
Если это - стандартный код (типа сопоставления или сводного), то вам можно только посочувствовать, если же код самописный... ну вы поняли
Как писал Джон Роббинс в своей
широко известной в узких кругах книге, лучший способ отладки - это вообще не доводить дело до отладки. Можно использовать, к примеру,
контрактный подход и проверять пред-/пост-условия (см. также
вспомогательные классы для этого). Это обычно позволяет быстро выявлять проблемы и не допускать распространения кривых данных по системе. "Минус" такого подхода в том, что его преимущества не даются бесплатно - требуются определенные трудозатраты на этапе написания кода, а если код уже написан, то придется его доработать напильником. Если сложность кода в том, что есть куча итераций обработки данных, в ходе которых состояния объектов и/или данные в таблицах меняются нетривиальным образом, то тут можно приделать некий код трассировки, который бы выводил куда-либо текущую информацию о наиболее важных объектах/таблицах (тем более если используются временные таблицы). Затем можно проанализировать трассировку и попытаться понять, что пошло не так.
Цитата:
Сообщение от
konfet
Хочу иметь на руках полную "картину преступления" в тот момент, когда в данное ошибочное место пользователь "провалится" в следующий раз.
По-моему, в Аксапте штатно нет средств, позволяющих получить "снимок" всего состояния сессии, включая локальные переменные значимых и ссылочных типов каждого фрейма стека выполнения. В 4-ке работает Trace Parcer, но в вашем сценарии, я так понимаю, он не подходит (кажется, 4-ка еще не умеет циклически перезаписывать файл трассировки, ограничив его определенным размером). В общем, без доработки кода напильником с целью получения некой "телеметрии" тут, мне кажется, не обойтись.