Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: Andrey-Adamenko от 05-12-2020, 06:46:24

Название: Автоматическая сборка информации о фатальной ошибке
Отправлено: Andrey-Adamenko от 05-12-2020, 06:46:24
Здравствуйте!

Я занимаюсь поддержкой пользователей AutoCAD в нашей компании и у меня есть проблема.

Пользователи жалуются на внезапные появления фатальных ошибок AutoCAD.

Иногда это происходит при работе с таблицами или при переходе из листа в лист. Но бывает что ошибка возникает независимо от действий пользователя по прошествии некоторого количества времени.

Так как мы используем 2014 версию AutoCAD без подписки, получить официальную поддержку по этой проблеме невозможно.

Идея состоит в том чтобы собрать статистику по возникновению таких ошибок, возможно так же собрать дамп (dmpuserinfo.xml), и проанализировать их.

Вопрос: как отловить возникновение фатальной ошибки AutoCAD?
Возможно ли написать какой-то плагин на C# или C++ для этого?
Можно ли использовать средства COM для этого?
Какие средства Windows можно использовать?

Для отлова внезапного завершения работы AutoCAD думаю сделать плагин который будет "пинговать" какой-нибудь ресурс, и если обмен сообщениями внезапно прекратился, можно сделать вывод что работа AutoCAD прервана фатальной ошибкой.

Что ещё можно предпринять?
Может я не туда копаю?
Название: Re: Автоматическая сборка информации о фатальной ошибке
Отправлено: Привалов Дмитрий от 05-12-2020, 08:51:23
Идея состоит в том чтобы собрать статистику по возникновению таких ошибок, возможно так же собрать дамп (dmpuserinfo.xml), и проанализировать их.

Windows ведет логи ошибок, информациив них недостаточно? Информация хоть раз помогла установить ошибку в AutoCAD?

Пользователи жалуются на внезапные появления фатальных ошибок AutoCAD.
Что ещё можно предпринять?
Может я не туда копаю?

Основная причина вылетов AutoCAD это пользователи и чертежи. 70%
Использование дополнительных приложений и их объектов 20%

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

При анализе таких чертежей обнаруживается, что пользователь кроме кнопки открыть ничего не умеет.
А должны уметь:
_recovery, _audit, explodeproxy, removeproxy, _flatten, _overkill, _purge .....
управлять ссылками, масштабами аннотаций
управлять видами, пользоваться быстрым выбором
и т.д. и т.д.
Т.е. уметь анализировать свои чертежи, и исправлять ошибки в них.
50% пользователей не умеют это делать, не понимают вообще о чем речь  и ежедневно засоряют архив чертежей.
Название: Re: Автоматическая сборка информации о фатальной ошибке
Отправлено: Александр Ривилис от 06-12-2020, 16:21:47
Andrey-Adamenko,
https://docs.microsoft.com/ru-ru/windows/win32/api/errhandlingapi/nf-errhandlingapi-setunhandledexceptionfilter?redirectedfrom=MSDN
Название: Re: Автоматическая сборка информации о фатальной ошибке
Отправлено: Павел55 от 06-12-2020, 23:10:41
Для отлова внезапного завершения работы AutoCAD думаю сделать плагин который будет "пинговать" какой-нибудь ресурс, и если обмен сообщениями внезапно прекратился, можно сделать вывод что работа AutoCAD прервана фатальной ошибкой.

Что ещё можно предпринять?
Может я не туда копаю?
Можно попробовать написать плагин, который будет писать данные в лог файл каждые 5-10 сек. Отслеживать все пользовательские команды, время вызова, количество proxy графики и т.д. и каждый день этот лог очищать - а перед этим анализировать на предмет аварийного завершения. Но это конечно гадание на кофейной гуще.
Название: Re: Автоматическая сборка информации о фатальной ошибке
Отправлено: Andrey-Adamenko от 07-12-2020, 06:43:48
Спасибо за ответы!

Windows ведет логи ошибок, информациив них недостаточно? Информация хоть раз помогла установить ошибку в AutoCAD?
К сожалению, совершенно не достаточно. Обычно они не содержат информации которую я могу использовать для выявления причины ошибки. Лишь однажды проблема возникала из-за поврежденных файлов .net framework, и в этот раз информацию удалось получить из лога.

При анализе таких чертежей обнаруживается, что пользователь кроме кнопки открыть ничего не умеет.
Наши сотрудники вынуждены знать как очистить чертеж и исправить ошибки. Иначе фатальные ошибки будут возникать ещё чаще. Я говорю о тех случаях когда после анализа чертежа, причину "вылета" определить не удается...


Andrey-Adamenko,
https://docs.microsoft.com/ru-ru/windows/win32/api/errhandlingapi/nf-errhandlingapi-setunhandledexceptionfilter?redirectedfrom=MSDN
Спасибо за подсказку, буду капать в эту сторону.

Павел55, буду эксперементировать!)
Название: Re: Автоматическая сборка информации о фатальной ошибке
Отправлено: Привалов Дмитрий от 07-12-2020, 07:55:22
Я говорю о тех случаях когда после анализа чертежа, причину "вылета" определить не удается...
Если что, хорошо помогает починка/очистка чертежа и копирование в новый чертеж.

Я не к тому, что стоит, или не стоит собирать статистику.
Нужно как-то докопаться до причины и исправить, чтобы можно было дальше работать с чертежом.
Наводящие вопросы:
В только что созданных такая ошибка повторяется?
Если таблицы перенести в новый чертеж через время появиться ошибка?
А если таблицы разбить?

Разбивая/копируя объекты частенько удается найти проблемные объекты, проанализировать исправить.
Не уверен, что анализ логов приблизит к решению проблемы "внезапные появления фатальных ошибок AutoCAD".

Вот пример, вылетает AutoCAD 2010 при выделении стен и дверей СПДС, когда активирован ObjectEnabler.
Что бы дал лог? В лучшем случае указал на  ObjectEnabler.
Название: Re: Автоматическая сборка информации о фатальной ошибке
Отправлено: trir от 07-12-2020, 07:56:12
мне обычно хватало дампа
Название: Re: Автоматическая сборка информации о фатальной ошибке
Отправлено: Andrey-Adamenko от 07-12-2020, 08:59:30
Привалов Дмитрий, есть подозрение что проблема может быть связана с конфигурацией системы. Возможно так же, влияние оказывает антивирус. Такой анализ нужен чтобы посмотреть на каких компьютерах фатальные ошибки возникают чаще, а на каких может быть и вовсе не возникают, есть ли разница в дампах, после этого рассмотреть особенности системы и может быть конфигурации железа. Попытаться исключить влияние антивируса.

Опрашивать пользователей смысла нет, их мнение очень субъективно.

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

Конечно, иногда приходится "тыкать носом" пользователя в то что в чертеже содержатся ошибки, но не всегда дело в этом.


trir,
мне обычно хватало дампа
Зачастую в дампе содержится подобная строка:
<AppCDATA><![CDATA[Command: _.LAYOUT_CONTROL;������ ������;(lisp-���������);������ ������]]></AppCDATA>
Что это значит? Можно ли это как то использовать?
Название: Re: Автоматическая сборка информации о фатальной ошибке
Отправлено: trir от 07-12-2020, 09:01:59
можно
Название: Re: Автоматическая сборка информации о фатальной ошибке
Отправлено: Привалов Дмитрий от 07-12-2020, 09:57:19
есть подозрение что проблема может быть связана с конфигурацией системы.
Когда Автокад "вылетает" периодически, то есть через определенный промежуток времени, неважно какой открыт чертеж, он вылетает даже если не открыт ни один чертеж.

Если проблема действительно системная и частая, я бы пошел таким путем.

1. Определись у всех ли пользователей такое....это важно.
2. Есть ли продвинутые пользователи у которых наблюдается эта проблема? С ними быстрее и проще выявить проблему.
3. Важно перезагрузить компьютер, т.к. некоторые не перезагружают неделями.
4. Создаешь пустой профиль автокада и предлагаешь поработать с теми же чертежами. Это важно. Так отсекаешь все надстройки AutoCAD. Есть нюансы, что часть надстроек через реестр подгружается.
5. Собственно, если ошибка была и пропала ищешь в надстройках.

6. Если ошибка не пропала стоит продолжить работать с пустыми чертежами, т.е. в отсутствии надстроек и влияния чертежей.
7. Если ошибка пропала значит искать в чертежах, если повторяется, значит копаться в системе.

Надстройки важно отсечь, у нас например периодически всплывала такая проблема:
На компьютерах, где была установлена LiraSAPR периодически переставало работать сохранение чертежей.
Название: Re: Автоматическая сборка информации о фатальной ошибке
Отправлено: Александр Ривилис от 07-12-2020, 10:25:28
Что это значит? Можно ли это как то использовать?
В данном случае происходила работа с листами чертежа - возможно переключение.
Когда Автокад "вылетает" периодически, то есть через определенный промежуток времени, неважно какой открыт чертеж, он вылетает даже если не открыт ни один чертеж.
Это возможно только если проблема с железом или стоит какое-то сторонне приложение в AutoCAD (SPDS Extension я тоже считаю сторонним приложением).
Название: Re: Автоматическая сборка информации о фатальной ошибке
Отправлено: Александр Ривилис от 07-12-2020, 10:45:06
4. Создаешь пустой профиль автокада и предлагаешь поработать с теми же чертежами. Это важно. Так отсекаешь все надстройки AutoCAD. Есть нюансы, что часть надстроек через реестр подгружается.
Практически ничего не отсекаешь. Кроме реестра еще и автозагрузчик из Bundle.
Название: Re: Автоматическая сборка информации о фатальной ошибке
Отправлено: Привалов Дмитрий от 07-12-2020, 11:01:34
Практически ничего не отсекаешь.
??
В профиле находятся приложения добавленые через _appload.
В профиль подгружены меню, которые могут подгружать другие приложения.
Плюс прописаны папки, в которых могут лежать acad.lsp и acaddoс.lsp
Название: Re: Автоматическая сборка информации о фатальной ошибке
Отправлено: Александр Ривилис от 07-12-2020, 14:23:14
В профиле находятся приложения добавленые через _appload.
Если ты имеешь в виду автозагрузка через портфельчик, то да. Но я даже не рассматриваю этот способ, как самый ненадежный.
В профиль подгружены меню, которые могут подгружать другие приложения.
Теоретически да. Практически, начиная с AutoCAD 2012 нормальные (!!!) приложения используют или BUNDLE или запись автозагрузки в реестр (в ту ветку, которая к профилю не имеет никакого отношения). А все эти acad.lsp/acaddoc.lsp и т.д. - это осталось только для тех, кто пишет на lisp (который в режиме простоя и без открытого документа не может привести к Fatal Error) или использует древние версии AutoCAD.
Название: Re: Автоматическая сборка информации о фатальной ошибке
Отправлено: Привалов Дмитрий от 07-12-2020, 15:40:02
...или использует древние версии AutoCAD.
это про нас :-(

как самый ненадежный.
А в чем проявляется ненадежность?
...Пару случаев было, когда без видимых причин приложение(GeoniCS) переставало грузиться, пока не вызовешь _appload и тут же не закроешь.

начиная с AutoCAD 2012 нормальные (!!!) приложения используют или BUNDLE или запись автозагрузки в реестр (в ту ветку, которая к профилю не имеет никакого отношения).
Пользователям не нужны нормальные приложения, которые используют BUNDLE. Им нужны приложения которые решают их задачи.
Коммерческие программы иногда используют mnl файлы. Пользователи сами могут скачивать и устанавливают различные бесплатные приложения. Многие из приложений основаны на достаточно старых технологиях.

А все эти acad.lsp/acaddoc.lsp и т.д. - это осталось только для тех, кто пишет на lisp (который в режиме простоя и без открытого документа не может привести к Fatal Error) или использует древние версии AutoCAD.
Я сознательно использую acad.lsp/acaddoc.lsp как часть системы автоматической настройки и обновления.

Систему приходится менять и через acad.lsp/acaddoc.lsp быстрее и проще администрировать.
Я делал не только чтобы я смог разобраться и поменять.
На рабочем месте пользователя, для тестирования, проще и быстрее в файлике поменять чем в реестр лезть.
Чтобы проверить как работает AutoCAD без довесок, как правило достаточно создать новый профиль и перезапустить AutoCAD.
Остаются как раз Ваши приложения ExplodeProxy, SelSim и т.д. но с ними проблем нет.

Если и буду менять, то напишу свой загрузчик, возможно даже на lisp.

acad.lsp/acaddoc.lsp, *.mnl, *.CUIX в свою очередь могут грузить что угодно, lisp, arx, vba, которые могут приводит к любым последствиям.
Название: Re: Автоматическая сборка информации о фатальной ошибке
Отправлено: Александр Ривилис от 07-12-2020, 15:47:09
...Пару случаев было, когда без видимых причин приложение(GeoniCS) переставало грузиться, пока не вызовешь _appload и тут же не закроешь.
Никогда не думал, что они используют загрузку через портфельчик. С ним на моей практике аналогичных проблем была масса.
Название: Re: Автоматическая сборка информации о фатальной ошибке
Отправлено: Привалов Дмитрий от 07-12-2020, 16:07:47
Никогда не думал, что они используют загрузку через портфельчик.
GeoniCS используют изначально загрузку через HKLM и локальный профиль. Но это работает как-то криво.
Нужно пользователю дать права админа создать профиль, установить GeoniCS. Тогда работает.

Но пользователь хочет естественно свой старый, настроенный профиль GeoniCS под панели, а не ленту и т.д., и никак иначе.
Пришлось переключить. Профиль естественно не работает а CSинтегратор не интегрирует ...хз почему.
Дальше вручную добавлял, но изредка глюки с _appload.
Название: Re: Автоматическая сборка информации о фатальной ошибке
Отправлено: Александр Ривилис от 07-12-2020, 16:11:56
Дальше вручную добавлял, но изредка глюки с _appload.
Там же стартует arx-файл? Тогда лучше его поместить в acad.rx. Впрочем, так издеваться над приложением...