Properrr
@Properrr

Кто знает готовые решения по сбору трейсов?

Котаны, подскажите готовые велосипеды по сбору трейсов.
Я хочу:
- Выводить трейсы в консоль
- Писать все или выборочные трейсы в фаил
- Подключаться удаленно клиентом для удобного их анализа в GUI
Вишня на торте:
- Удаленное управление настройками трасировки из-под клиента GUI

Язык: C || C++
Желательно(!) что бы эти сообщения не "заводились" через макросы. лучше каким-то статическим объектом или функциями.

Если такого нет, то придется писать самому...
  • Вопрос задан
  • 2291 просмотр
Пригласить эксперта
Ответы на вопрос 1
megat72
@megat72
Программист-разработчик
Желательно(!) что бы эти сообщения не "заводились" через макросы. лучше каким-то статическим объектом или функциями.


Думаю, тут дело как раз в C/C++. Это неуправляемые языки, поэтому все равно придется поработать ручками.

Пишите банальную функцию для записи трейса в файл:
void WriteMyTrace( char*pszTrace, ... ){
  va_list ap;
  FILE*f;
  va_start( ap, pszTrace );
  f = fopen( TRACE_FILE_NAME, "a" );
  vfprintf( f, pszTrace, ap );
  fclose( f );
  va_end( ap );
}

Пишите макрос, который будет ее вызывать:
#define TRACE( fmt, ... ) WriteMyTrace( "%s(%i): "##fmt##"\r\n", __FILE__, __LINE__, __VA_ARGS__ )

И расставляете в своем коде ловушки:
...
if( !something( x, y, z ) ){
  TRACE( "something [%i, %x, %s]", x, y, z );
  return false;
}
if( !something_two( a, b ) ){
  TRACE( "something two [%i]", b - a );
  return false;
}
...

Трейсер готов. Это было не сложно.

На мой взгляд, интереснее был бы вопрос не о сборе трейсов, а об инструментах по их анализу, т.к. собрать их для программиста C/C++ - не проблема, за форматом их представления - тоже дело не стоит, а вот правильно понять и найти по ним ошибки, особенно в многопоточных программах - это уже совсем другое дело.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы