Показать полную графическую версию : Программа определения причины зависания консоли
Diana_Konovalova
16-08-2015, 15:10
Всем доброго времени.
Нужно организовать FixBag на 173 машинах.
Ищу программу под управлением Windows, которая может постоянно отслеживать зависание конкретного консольного приложения, единожды определенного администратором и определяющая причину этой "заморозки" с возможностью ведения лога. Зависание происходит не на всех машинах и в разное время выполнения консольного приложения, нужно конкретно определить саму причину нестабильности работы программы на конкретном ПК.
Подскажите, кто чем пользуется ?
Нужно естественно леченое :)
Подскажите, кто чем пользуется ? »
Исходным кодом этого приложения и отладчиком.
Diana_Konovalova
17-08-2015, 07:08
Исходным кодом этого приложения и отладчиком. »
Полностью согласна, но автор программы утверждает, что у него таких проблем нет.
Он мог бы пофиксить эту ошибку, но дистанционно это сделать через интернет очень проблематично.
На определенных ПК (еще раз подчеркиваю не на всех) при запуске этого консольного приложения, бывает процессор сразу грузит на 100% без какой либо введенной команды, но при запуске программы в Virtual Mode (на виртуальной машине) такого зависания (на этих ПК) не происходит.
Как можно выяснить - это аппаратная или программная часть виновата ?
Diana_Konovalova, в общих чертах что делает эта консольная программка?
автор программы утверждает, что у него таких проблем нет. »
Если у кого-то программа не работает должным образом - значит не было произведено качественное тестирование ПО, а т.к. причин зависаний может быть великое множество - здесь вам сможет помочь только разработчик этого продукта, добавив в свою программу логирование при работе, чтобы определить, на каком участке кода программа отрабатывает некорректно.
при запуске этого консольного приложения, процессор сразу грузит на 100% »
Как можно выяснить - это аппаратная или программная часть виновата ? »
Скорее программная из-за каких-то особенностей системы/железа (вообще, не зная названия программы проблематично что-то конкретное сказать), т.к. видимо, где-то программа входит в вечный цикл обработки данных (судя по загрузке проца), соответственно, где-то ошибка в коде
Со стороны пользователя проблематично найти ошибку в программе, т.к. пользователь не знает, как устроена программа и что она делает при определённых операциях
Можете, конечно, воспользоваться дебаггерами - но сомневаюсь, что без подготовки вы что-то сможете сделать
Diana_Konovalova
17-08-2015, 21:50
в общих чертах что делает эта консольная программка? »
Синхронизацию содержимого каталогов (одно- и двунаправленную), создание и обработку файл-листов, расфасовку информации на "порции" заданного размера и много других полезных функций...
здесь вам сможет помочь только разработчик этого продукта »
Выполнение этой программы происходит на конторских машинах со своим индивидуальным железом и возможности автору программы приехать или дистанционно запустить отладчик не имеется. Запуск внешнего профайлера более реален, но тоже сопряжён с огромными сложностями. Как можно, не прибегая к профайлеру, определить точку зависания программы?
добавив в свою программу логирование при работе »
Сегодня узнала, что по мнению автора, вариант "подробное логирование работы этой программы в файловую систему" для идентификации ошибки плохо подходит. Он объясняет это тем, что программа состоит из около 45 тысяч строк кода, а самое главное из моей практики, бывает виснет не сразу после запуска и достаточно редко.
видимо, где-то программа входит в вечный цикл обработки данных (судя по загрузке проца) »
Пробовала Process Explorer, но он очень странно работает, либо я до конца не разобралась. Если успеть "поймать" поток, вошедший в бесконечный цикл, то его стек посмотреть вполне возможно, но этот поток достаточно быстро "исчезает", либо в РЕ, то ли его действительно "убивает" среда. :dont-know
Можете, конечно, воспользоваться дебаггерами »
Вариант приложения-монитора вполне приемлем. Если можно как-то создать дамп процесса или получить информацию о потоках этого процесса, то было бы совсем здорово. Если есть какой-то готовый инструмент, то будет ещё лучше ? :)
Выполнение этой программы происходит на конторских машинах со своим индивидуальным железом и возможности автору программы приехать или дистанционно запустить отладчик не имеется »
При обнаружении бага в программе - автору не нужно куда-то ехать и самому что-то делать дистанционно, для решения таких проблем в программу интегрируется функция логирования, лог работы программы передаётся разработчику и он устраняет баг в программе
Что такое "профайлер"? Первый раз слышу это слово
Как можно, не прибегая к профайлеру, определить точку зависания программы? »
Я вам ещё раз повторяю, если вы с первого раза что-то не поняли: никак вы не определите, на каком месте программа отрабатывает некорректно, если вы не разработчик этой программы
Сегодня узнала, что по мнению автора, вариант "подробное логирование работы этой программы в файловую систему" для идентификации ошибки плохо подходит. Он объясняет это тем, что программа состоит из около 45 тысяч строк кода, а самое главное из моей практики, бывает виснет не сразу после запуска и достаточно редко. »
По мнению вашего автора - его программа идеальна (т.к. у него работает на все 100% без ошибок) и ей больше ничего не требуется, сразу видно его отношение к пользователям своей программы, а если его программа ещё и доход ему приносит с вашей организации (платное ПО?) - тогда у этого "автора" вообще совести нет
Если прога виснет не всегда - как раз логирование это самый подходящий из вариантов...Просто автору лень, вот и всё, а 45 тысяч строк - это вовсе не много
Вариант приложения-монитора вполне приемлем »
От вас о самой программе 0 информации, поэтому опять же, посоветовать можно только "в слепую", ваше приложение что-то пишет в консоль вообще или нет? Если пишет - автору не составит труда перенаправить вывод информации из консоли в файл
Вы, кстати, можете это и сами сделать, допустим, создадим батник следующего содержания:
myapp.exe > test.log
всё, что напишет программа myapp.exe в своей консоли - будет сохранено в текстовый файл, если ваша прога постоянно отображает информацию - может, и можно таким способом определить, где проблема
Насчет дебаггеров - при их использовании, дебаггер покажет, на каком месте прервалось исполнение программы, но, т.к. вы не автор сей проги и, думаю, не знакомы с дебаггерами - вам это не поможет, +вам этот вариант не подойдёт хотя бы потому, что как вы говорили, программа зависает не всегда
Не знаю, что тут ещё сказать, разработчик вам в помощь, пинайте его сильно сильно, втройне сильнее, если софт платный :)
Вариант приложения-монитора вполне приемлем. »
Очень хорошо что вас устраивает такой вариант. Есть всего одна маленькая загвоздочка - таких приложений-мониторов не существует в природе.
Как уже выше неоднократно упоминалось - такие проблемы решаются исключительно через разработчика. Как словить и починить баг - это исключительно его работа. Ваша задача, как пользователя - только описать разработчику действия которые приводят к зависанию (если таковой алгоритм имеется).
И, в общем-то, если этот самый разработчик предоставил вам свою программу as is (и допустим, уволился из вашей конторы) - вполне возможно что он не захочет её исправлять. Потому что в общем-то и не должен, это уже вопрос морали. В таких случаях помогает поиск альтернативы и\или материальный стимул.
Что такое "профайлер"? Первый раз слышу это слово »
«Profiler»: Profiling (computer programming) - Wikipedia, the free encyclopedia (https://en.wikipedia.org/wiki/Profiling_(computer_programming)). Преимущественно используется для определения «узких» мест при исполнении приложения.
Diana_Konovalova
18-08-2015, 21:08
Что такое "профайлер"? Первый раз слышу это слово »
Если для отладки программы используется основной инструмент - отладчик, то для оптимизации кода желательно использовать инструмент - профайлер.
Профайлер - это определенный подвид отладчика, он запускает программу под отладкой и отслеживает, какой код будет выполнять эта программа. После работы профайлера, с точностью можно выяснить, чем была занята программа, какой код в ней дольше всего выполнялся, т.е. можно однозначно определить узкие места в производительности самого кода, а так же зафиксировать точку зависания программы в бесконечном цикле, если происходит такая ситуация. Смысл профайлера заключается в том, что вы фильтруете информацию и получаете возможность сфокусироваться на том, что хотите знать. Т.е. вы "задаете вопрос", профайлер показывает вам ответ, вы уточняете "вопрос" и так далее, пока не будет найдено проблемное место в программе.
Этот способ был предложен разработчиком программы, причем запуск профайлера на удаленной машине через интернет и как я уже говорила - это сопряжёно с огромными сложностями, в первую очередь с обеспечением безопасности передаваемой информации и специфическими особенностями работы нашей компании, поэтому этот вариант был сразу отвергнут нашим руководством.
Искренне благодарю всех, кто помогал мне решить этот вопрос.
Всего Вам доброго и не прощаюсь, Диана. :girlinlove:
Diana_Konovalova, благодарю за объяснение, о таком не слышал :)
Этот способ был предложен разработчиком программы »
Похоже, Вам попался "неправильный разработчик", который весь процесс по поиску ошибки решил возложить на пользователя, что мягко говоря странно и вообще, не правильно :o
Всего Вам доброго и не прощаюсь, Диана. »
И Вам всего доброго, может, потом зайдёте к нам в гости на пару минут и расскажите, чем эта история закончилась (запинаете ли разработчика до появления у него желания добавления логирования или решите другим методом)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.