Цитата:
Сообщение от
konfet
Ситуация такая. Время от времени у пользователей возникает некая ошибка (полю автоматически присваивается то значение, которое не должно присваиваться).
Нужно "размотать" ситуацию и понять, что именно в бизнес процессе и/или настройках и/или коде неправильно.
Я локализовал то место в коде, которое в конечном счете инициирует ошибку, и куда выполнение при данном наборе условий по идее не должно "проваливаться".
НО: код очень сложный, многоуровневый, этот набор условий - большой, воссоздать ситуацию и вычленить именно то условие или событие, которое привело к ошибке - трудно да и нет времени.
Хочу иметь на руках полную "картину преступления" в тот момент, когда в данное ошибочное место пользователь "провалится" в следующий раз.
Собственно вопрос: есть ли в аксапте некий метод (назовем его getSnapshot()), вызов которого запишет в некий журнал - таблицу БД или в файл следующую информацию:
- Стек вызова;
- Значения всех локальных и объектных переменных того места, откуда метод был вызван, а также всех локальных и объектных переменных всех уровней выполнения выше по стеку (кроме BLOB);
- Возможно, выдаст и некое уведомление о факте проваливания, например на емейл.
Подозреваю, что похожая задача в аксапте решалась многими, и не хочу изобретать лисапед.
AX 4.0 sp3.
Мне кажется где то уже писалось на форуме, но что то не могу найти.
Я для поиска "откуда это ... взялось" использую следующее:
1. Добавялете поле "CallStack" в журнал БД (SysDataBaseLog) (можно сделать отдельную связную табличку, что бы не корячить SysDataBaseLog).
2. Доработать метод insert() на таблице SysDataBaseLog, что бы в добавленное поле писался стэк вызова (xSession::xppCallStack()).
3. На проблемную таблицу включить Журнал БД.
4. Когда начнут жаловатся, открываем журнал БД и смотрим стэк вызова.
Первые два пункта мне кажется на форуме где то есть, можете поискать.
Конечно заполнение данного поля приведет к распуханию БД. Поэтому лучше сделать параметр, который бы включал и выключал запись стэка вызова в БД. И включать этот параметр только при необходимости (при ловле "блох"

)
P.S. мне это ОЧЕНЬ помогает в жизни, т.к. приходится работать с кодом очень низкого качества. Только так смогли выудить кучу различных багов, которые делают полный бред, но в глаза не брасаются