Падает приложение

Темы связанные с инженерными разработками, но не подходящие в другие ветки форума
Ответить
Аватара пользователя
Sergey Ivanov

Activity Professionalism Gold Автор
expert
expert
Сообщения: 1217
Зарегистрирован: 01 мар 2009, 20:54
Награды: 5
Версия LabVIEW: 2018
Откуда: Санкт-Петербург, Кронштадт
Благодарил (а): 11 раз
Поблагодарили: 1 раз
Контактная информация:

Падает приложение

Сообщение Sergey Ivanov »

Всем привет. Столкнулся с проблемкой: самопроизвольно выключаетс приложение. Ошибок, при этом, никаких нет. Как можно отследить причину этого явления ?
Выключиться может и через 5 минут работы и через несколько часов.
Добро пожаловать на http://rk-stud.ru/
Аватара пользователя
Vitekkz88

Activity Silver Автор
expert
expert
Сообщения: 1100
Зарегистрирован: 21 янв 2014, 15:45
Награды: 3
Версия LabVIEW: 12,13,14
Откуда: Томск
Контактная информация:

Re: Падает приложение

Сообщение Vitekkz88 »

А что за приложение? LabVIEW-шное?
Что внутри?ActiveX? Какое-то стороннее ПО задействовано?
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
AndreyDmitriev

Activity Professionalism Tutorials Gold Black
VIP
VIP
Сообщения: 1337
Зарегистрирован: 03 фев 2010, 00:42
Награды: 6
Версия LabVIEW: 6.1 - 2024
Откуда: Германия
Благодарил (а): 1 раз
Поблагодарили: 42 раза
Контактная информация:

Re: Падает приложение

Сообщение AndreyDmitriev »

Ну для начала посмотреть в системный лог Windows (Application).
Можно раскидать по всему приложеню запись в свой лог (ну или использовать OutputDebugStringA()) и посмотреть в каком месте падает по последней записи. Можно также запуститься из под отладчика (windbg) - есть шанс, что там, где возникнет исключение, оно не просто свалится, а упадёт вам в руки.
Обычно такое происходит, если внешний код используется (DLL, .net ActiveX), либо что-то очень настандартное накручено (у меня, к примеру были падения если VISA функции использовались в TimedLoop).
Аватара пользователя
Sergey Ivanov

Activity Professionalism Gold Автор
expert
expert
Сообщения: 1217
Зарегистрирован: 01 мар 2009, 20:54
Награды: 5
Версия LabVIEW: 2018
Откуда: Санкт-Петербург, Кронштадт
Благодарил (а): 11 раз
Поблагодарили: 1 раз
Контактная информация:

Re: Падает приложение

Сообщение Sergey Ivanov »

Спасибо за советы.
Vitekkz88 писал(а):А что за приложение? LabVIEW-шное?
Что внутри?ActiveX? Какое-то стороннее ПО задействовано?
да, лабвьюшное. программа просмотра контента.
activex есть, есть и dll (vlc плеер)

AndreyDmitriev писал(а):Можно также запуститься из под отладчика (windbg) - есть шанс, что там, где возникнет исключение, оно не просто свалится, а упадёт вам в руки.
а что это такое ? Это из под :labview: необходимо будет запускаться ?

AndreyDmitriev писал(а):Обычно такое происходит, если внешний код используется (DLL, .net ActiveX)
и первое и второе используется.
Добро пожаловать на http://rk-stud.ru/
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 127 раз
Контактная информация:

Re: Падает приложение

Сообщение dadreamer »

LabVIEW при запуске создаёт во временной директории (обычно это C:\Windows\Temp) лог-файл, в который пишет системные сообщения и критические ошибки. Например, у меня в данный момент это файл LabVIEW_32_14.0f1_user_cur.txt. Попробуйте посмотреть, что там написано после падения программы.
А также довольно неплохой способ выловить проблемный участок - изолирование отдельных кусков кода. Допустим, убираете все ActiveX-узлы и гоняете программу. Если упадёт, убираете ещё какие-то узлы/инструменты. И так далее, пока не найдёте "виновника".
Почитайте также тему http://labviewportal.org/viewtopic.php? ... 86&p=51607
Аватара пользователя
Vitekkz88

Activity Silver Автор
expert
expert
Сообщения: 1100
Зарегистрирован: 21 янв 2014, 15:45
Награды: 3
Версия LabVIEW: 12,13,14
Откуда: Томск
Контактная информация:

Re: Падает приложение

Сообщение Vitekkz88 »

Sergey Ivanov, Программа как .exe запускается и падает? Или эти падения на этапе разработки из под LabVIEW происходят? Используемые dll раньше в проекты подключали и без проблем работало?
Может есть возможность дать потестить нам? Возможно дело в используемой ОС? Или падает на всех машинах?
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
AndreyDmitriev

Activity Professionalism Tutorials Gold Black
VIP
VIP
Сообщения: 1337
Зарегистрирован: 03 фев 2010, 00:42
Награды: 6
Версия LabVIEW: 6.1 - 2024
Откуда: Германия
Благодарил (а): 1 раз
Поблагодарили: 42 раза
Контактная информация:

Re: Падает приложение

Сообщение AndreyDmitriev »

Sergey Ivanov писал(а):
AndreyDmitriev писал(а):Можно также запуститься из под отладчика (windbg) - есть шанс, что там, где возникнет исключение, оно не просто свалится, а упадёт вам в руки.
а что это такое ? Это из под :labview: необходимо будет запускаться ?
Чёт вы странные вопросы задаёте для эксперта.
WinDbg забираете отсюда:
https://msdn.microsoft.com/en-us/window ... 52365.aspx

Теперь берём приложение, которое гарантированно роняет LabVIEW, и раскидываем там OutputDebugString вывод, ну скажем:
Изображение
Ясное дело, вы изначально не знаете, где оно падает, так что тут работает метод последовательных приближений.
В принципе для "первой пристрелки" можно и без отладочной печати обойтись - ниже станет ясно почему.
Теперь запускаем WinDbg и открываем там наше сгенерированное приложение:
Изображение
Если падает только среда разработки, то надо LabVIEW.exe грузить, разумеется
После загрузки мы встаём на точку останова - даём команду g для продолжения выполнения:
Изображение
Теперь роняем наше приложение и тут же вываливаемся в отладчик:
Изображение
Открываем call stack и смотрим цепочку функций, вызвавших исключение и там видим прекрасное:
Изображение
Далее размышляем - если мы сами не вызываем MemBlock, то ConvertTime (To Time Stamp) - как раз то, откуда ноги растут.
Этот метод не панацея (особенно в многопоточной среде вы можете запросто видеть цепочку вызовов из другого потока и т.д), но иногда может помочь.
Буквально в прошлом месяце я так отловил спонтанное падение ранее работающего приложения при совершенно безобидном запросе загрузки ЦПУ через .net.
У меня это вот так выглядело:
Изображение
А проблема оказалась в порушенном Performance Counter.

Upd: ещё маленький совет - вывод OutputDebugStringA можно смотреть в DebugView:
https://technet.microsoft.com/en-us/lib ... 96647.aspx
Это чтобы не скачивать и ставить тяжеловесный отладчик, а просто видеть, что последнее писалось в лог перед падением приложения.

Где-то так.
Вложения
Kill SubVI Test.zip
(10.94 КБ) 194 скачивания
Аватара пользователя
Sergey Ivanov

Activity Professionalism Gold Автор
expert
expert
Сообщения: 1217
Зарегистрирован: 01 мар 2009, 20:54
Награды: 5
Версия LabVIEW: 2018
Откуда: Санкт-Петербург, Кронштадт
Благодарил (а): 11 раз
Поблагодарили: 1 раз
Контактная информация:

Re: Падает приложение

Сообщение Sergey Ivanov »

dadreamer писал(а):LabVIEW при запуске создаёт во временной директории (обычно это C:\Windows\Temp) лог-файл, в который пишет системные сообщения и критические ошибки. Например, у меня в данный момент это файл LabVIEW_32_14.0f1_user_cur.txt. Попробуйте посмотреть, что там написано после падения программы.
спасибо, посмотрю.

Vitekkz88 писал(а):Sergey Ivanov, Программа как .exe запускается и падает? Или эти падения на этапе разработки из под LabVIEW происходят? Используемые dll раньше в проекты подключали и без проблем работало?
Может есть возможность дать потестить нам? Возможно дело в используемой ОС? Или падает на всех машинах?
Да, как exe. Запускается, работает какое-то время, потом падает. Время работы может быть всегда разным. При чём, на некоторых компьютерах отлично работает, на некоторых падает.
Возможности потестить, к сожалению, нет (
Win8
AndreyDmitriev писал(а):Ну для начала посмотреть в системный лог Windows (Application).
Там вот что нашёл:

Код: Выделить всё

Имя сбойного приложения: Player.exe, версия: 1.0.0.0, отметка времени: 0x51d22c87
Имя сбойного модуля: KERNELBASE.dll, версия: 6.3.9600.17031, отметка времени 0x53088860
Код исключения: 0xe0434352
Смещение ошибки: 0x00014dbd
Идентификатор сбойного процесса: 0x47c
Время запуска сбойного приложения: 0x01d0af164dad4242
Путь сбойного приложения: C:\Player13.03\Player.exe
Путь сбойного модуля: C:\Windows\SYSTEM32\KERNELBASE.dll
Код отчета: 3853a75a-1b31-11e5-8295-fcaa14163419
Тут нашёл возможное решение проблемы:

Код: Выделить всё

Скачайте ComboFix [url=http://download.bleepingcomputer.com/sUBs/ComboFix.exe]здесь[/url] и сохраните на Рабочий стол. 

1. Внимание! Обязательно закройте все браузеры, временно выключите антивирус, firewall и другое защитное программное обеспечение. Не запускайте других программ во время работы Combofix. Combofix может отключить интернет через некоторое время после запуска, не переподключайте интернет, пока Combofix не завершит работу. Если интернет не появился после окончания работы Combofix, перезагрузите компьютер. Во время работы Combofix не нажимайте кнопки мыши, это может стать причиной зависания Combofix.
2. Запустите combofix.exe, когда процесс завершится, файл C:\ComboFix.txt прикрепите к сообщению.
Примечание: В случае, если ComboFix не запускается, переименуйте combofix.exe в combo@fix.exe
отпишусь по результатам
Добро пожаловать на http://rk-stud.ru/
AndreyDmitriev

Activity Professionalism Tutorials Gold Black
VIP
VIP
Сообщения: 1337
Зарегистрирован: 03 фев 2010, 00:42
Награды: 6
Версия LabVIEW: 6.1 - 2024
Откуда: Германия
Благодарил (а): 1 раз
Поблагодарили: 42 раза
Контактная информация:

Re: Падает приложение

Сообщение AndreyDmitriev »

Sergey Ivanov писал(а):

Код: Выделить всё

Имя сбойного приложения: Player.exe, версия: 1.0.0.0, отметка времени: 0x51d22c87
Имя сбойного модуля: KERNELBASE.dll, версия: 6.3.9600.17031, отметка времени 0x53088860
Код исключения: 0xe0434352
Смещение ошибки: 0x00014dbd
Идентификатор сбойного процесса: 0x47c
Время запуска сбойного приложения: 0x01d0af164dad4242
Путь сбойного приложения: C:\Player13.03\Player.exe
Путь сбойного модуля: C:\Windows\SYSTEM32\KERNELBASE.dll
Код отчета: 3853a75a-1b31-11e5-8295-fcaa14163419
Тут нашёл возможное решение проблемы
Я б не стал запускать какие-то левые комбофиксы не разобравшись в сути проблемы и не понимая, что они делают с системой.

Исключение 0xe0434352 в KERNELBASE.dll с очень большой долей вероятности порождается исключением в .net. Если у вас несколько компьютеров, на части которых работает, а на других - нет, то имеет смысл сравнить версии .net, которые там установлены. Может помочь снижение версии (если у вас стоит, скажем 4.5, попробуйте 4.0).

Имеет смысл начать с поиска по ключевым словам "kernelbase.dll exception 0xe0434352", вот первая же ссылка:
http://stackoverflow.com/questions/2329 ... 000000a49d

Если воспользуетесь советом, который я выше дал, и поймате исключение в отладчик, скорее всего получите больше информации.
Вот примерно тоже самое, только чуть другими словами:
http://blog.fogcreek.com/production-deb ... xe053534f/
Ответить

Вернуться в «Общие»