|
![]() |
#1 |
Участник
|
Лог на вход дает валидные данные.
Подставляем значения в формулу: return (long)((double)QPFTime / (double)mFrequency * (double)multiplier); Берем обычное консольное приложение и 4 переменные создаем. X++: double a = (double)QPFTime; // 2, пример из изображения выше double b = 0; // проблемная переменная double c = (double)multiplier; // 10000000, на само деле может быть любой double d = (a / b * c); Вот тут погорячился. Трейсер просто последовательно считывает заголовки из файла. Сначала считывается "красивый": Следующий код его обрабатывает: X++: private void SetCurrentTraceInfo(EventArrivedEventArgs e) { QueryPerfCounter.Frequency = e.Properties.TryGetValue<long>("PerfFreq"); TraceInfo.Current.TotalBuffers = e.Properties.TryGetValue<uint>("BuffersWritten"); TraceInfo.Current.EventsDropped = e.Properties.TryGetValue<int>("EventsLost"); TraceInfo.Current.TimeStampBeginTick = e.Properties.TryGetValue<long>("StartTime"); TraceInfo.Current.TimeStampEndTick = e.Properties.TryGetValue<long>("EndTime"); } Следовательно безопасная e.Properties.TryGetValue<long>("PerfFreq"); выдает не исключение, а 0. Решений проблемы как было 2.5 так и осталось: 1. Выяснить насколько правильно, что файл содержит BuildString в таком виде. 2. Внести коррективы в исполняемый файл добавив обработку состояния, что значение e.Properties.TryGetValue<long>("PerfFreq") нужно использовать для присвоения QueryPerfCounter.Frequency когда оно не равно 0. 2.5 При вставке записи в БД заменять отрицательные значения на 0 - но это скорее так, для галочки вариант. Последний раз редактировалось Товарищ ♂uatr; 08.04.2023 в 17:37. |
|
![]() |
#2 |
Участник
|
Привет.
Реализовал самый простой вариант п.2 - целям в полной мере соответствует (миниатюра 1). Архив с дистрибутивом содержащим данное изменение во вложении. П.1 - поверхностно изучал вопрос, результаты исследования можно уместить в одно изображение (миниатюра 2). Последний раз редактировалось Товарищ ♂uatr; 13.04.2023 в 19:52. |
|
|
За это сообщение автора поблагодарили: Logger (20), alexkrut (2). |
![]() |
#3 |
Участник
|
Добрый день!
При запуске TraceParser из размещенного в теме дистрибутива получал ошибку BusinessConnector could not be loaded or logon failed. Source code will be disabled. Проблема заключалась в отсутствии config-файла. После добавления проблема исчезла. В файле достаточно следующего содержания Код: <?xml version="1.0"?> <configuration> <startup useLegacyV2RuntimeActivationPolicy="true"> </startup> </configuration> |
|
|
За это сообщение автора поблагодарили: Товарищ ♂uatr (5). |
Теги |
ax2009, trace parser |
|
|