Показать сообщение отдельно
Старый 08.04.2023, 17:30   #23  
Товарищ ♂uatr is offline
Товарищ ♂uatr
Участник
Аватар для Товарищ ♂uatr
MCBMSS
 
268 / 829 (28) +++++++
Регистрация: 23.10.2012
Лог на вход дает валидные данные.
Подставляем значения в формулу:
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);
Получаем infinity.

Цитата:
Сообщение от Товарищ ♂uatr Посмотреть сообщение
желающей видеть данное свойство у каждого события лога.
Вот тут погорячился. Трейсер просто последовательно считывает заголовки из файла.
Сначала считывается "красивый":

Следующий код его обрабатывает:
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");
}
А когда дело доходит до обработки событий типа "XppUtilFuncEvent" (в БД он представлен как [dbo].[TraceLines] с [CallTypeId] равный 16) - предварительно "прилетает" заголовок с единственным свойством:

Следовательно безопасная 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.