|
49 / 49 / 17
Регистрация: 23.02.2010
Сообщений: 437
|
|
.NET 3.x Перехватить исключение25.03.2016, 11:26. Показов 1342. Ответов 3
Метки нет (Все метки)
Есть самописный OPC клиент на основе OPCdotNETLib, который периодически опрашивает OPC сервер на локальном компе. OPCdotNETLib работает через COM. Через несколько рандомных часов выкидывается исключение, похоже виндовое, но при этом программа продолжает работать. И предлагается отправить отчет. Если нажать не отправлять программа закрывается.
Не знаю как перехватить это исключение. По сути мне только надо скрыть окно с предложением отправки отчета, ибо программа продолжает работать.
0
|
|
| 25.03.2016, 11:26 | |
|
Ответы с готовыми решениями:
3
Как перехватить процесс?
|
|
310 / 318 / 119
Регистрация: 29.10.2011
Сообщений: 1,006
|
|
| 25.03.2016, 14:51 | |
|
ZetX, Может попробовать в режиме отладки запустить в студии? тогда покажет место, где оно возникает
0
|
|
|
Администратор
|
|
| 25.03.2016, 15:21 | |
|
ZetX, не в том направлении думаешь. Правильнее найти и исправить ошибку. В информации об ошибке (error signature) видно что она произошла в сборке opcdotnetlib (p4) в члене с токеном 6с (P7) в IL-команде со смещением 1d (P8). Если под opcdotnetlib имеется в виду библиотека из статьи OPC and .NET with COM Interoperability, то под токен 0600006C попадает метод OpcGroup.Remove(bool). Попытка проверить что делает IL код со смещением 1d не увенчалась успехом т.к. при компиляции в Debug там безобидный ldarg.0, а в Release такого смещения нет. Скорее всего причина в версии компилятора. Нужно смотреть твою сборку. Однако предположения можно продолжать строить. Программа падает через долгий и разный промежуток времени. Метод Remove() вызывается из финализатора. Это наводит на мысль что приложение падает на вызове Remove() из финализатора. Случайность падения можно объяснить тем что мы не контролируем время вызова финализаторов и видимо нечто что приводит к его падению не происходит сразу.
Если есть возможность, то добавь в программу протоколирование необработанных исключений, положи рядям с ней pdb файл, запусти и дождись появления ошибки. Тогда по типу исключения и по трассировке стека можно будет думать что делать дальше. Также можно реализовать IDisposable в OpcGroup и сделать освобождение ресурсов явным с помощью using или вызова Dispose(). Это очевидно потребует внимательного анализа кода на предмет мест где создается OpcGroup и где он перестает быть нужным. Хотя прежде чем браться за это, я бы сначала получил точный текст и место исключения т.к. мои предположения относительно места ошибки могут оказаться неверными. Добавлено через 16 минут В поле P9 должно быть имя исключения, но там хеш (pszqoadhx1u5zahbhohghldgiy4qixhx) по которому нельзя восстановить имя. На stackoverflow есть вопрос как раз про похожий мусор и там утверждается что это COM исключение. Метод Remove() среди прочего освобождает COM объекты. Так что возможно мое предположение близко к истине.
1
|
|
|
49 / 49 / 17
Регистрация: 23.02.2010
Сообщений: 437
|
|||||||||||
| 28.03.2016, 14:14 [ТС] | |||||||||||
|
Запустил в режиме отладки через SharpDevelop (студию пока нет возможности поставить)
Два раза раза отловилось исключение:
Еще OPC сервер периодически перезапускаю. Возможно из-за этого может вылезать эта ошибка.
0
|
|||||||||||
| 28.03.2016, 14:14 | |
|
Помогаю со студенческими работами здесь
4
Как перехватить redirect Перехватить нажатие Enter
Перехватить нажатие кнопки в другом приложении Трафик с заданной программы перехватить и модифицировать Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2).
Унарный минус обозначается как !
*/
#include <iostream>
#include <stack>
#include <cctype>. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|