Отладка в c для файла журнала - PullRequest
0 голосов
/ 26 ноября 2010

Я записал программу на c и пытаюсь создать ее файл журнала.

Проблема, с которой я сталкиваюсь, заключается в том, что при печати выходных данных каждой строки в файле я хочу написать некоторую отличительную особенность, такую ​​как время выполнения этой строки или даже номер строки в коде.

Могу ли я узнать что-нибудь из этих двух?

Я не против, если вы предложите какой-нибудь другой способ получить отличительную черту. Все, что я хочу, это то, что, глядя на файл журнала, пользователь узнает, что выполняется определенная часть кода.

Спасибо


Я работаю над Linux и, таким образом, использую компилятор GCC ....

Я сделал заголовочный файл и в нем я для тестирования пишу __LINE__. То, что я хочу сделать, это то, что в программе, когда я включаю эту функцию файла заголовка, номер строки печатается там, где находится функция. Но вместо этого я получаю номер строки оператора printf заголовочного файла.

Что мне нужно сделать, чтобы получить номер строки файла. Это просто тестовый формат, приведенный ниже: -

new.h 
       void print()
       {
           printf("Line number is %d",__LINE__);
       }

actual file
       #include "new.h"
       int main()
       {
            print();
       }

Тогда я хочу, чтобы номер строки, который должен быть напечатан, соответствовал номеру фактического файла, а не new.h, что происходит сейчас ...

Ответы [ 5 ]

2 голосов
/ 26 ноября 2010

Большинство компиляторов Си предоставляют некоторые макросы для идентификации каждой строки, функции и т. Д. С GCC, например, вы можете использовать __LINE__, __FUNCTION__ и т. Д. Проверьте документацию вашего компилятора для деталей. Чтобы получить временную метку, вам нужно сообщить нам, над какой системой вы работаете.

2 голосов
/ 26 ноября 2010

Если вы хотите, чтобы фактические дата и время выполнялись, попробуйте asctime(). Вот хорошая справка о том, как это сделать здесь .

Это выведет что-то похожее на Sat May 20 17:36:17 2000. Если вам нужно время в секундах с момента запуска программы, используйте переменную, например int startTime = time(), которая хранит время запуска программы в секундах с начала Unix. Затем просто напечатайте startTime - time(), чтобы узнать количество секунд с момента запуска программы.

0 голосов
/ 26 ноября 2010

Номер строки может быть получен макросом препроцессора __LINE__. Файл __FILE__. Что касается времени, используйте соответствующую библиотеку ОС.

Или используйте библиотеку журналов, которая их поддерживает.

0 голосов
/ 26 ноября 2010

В GCC вы можете получить номер строки как "__LINE__". Имя файла - "__FILE __".

Если вы хотите рассчитать время выполнения, просто запомните время начала, получите время конца и вычтите их.

0 голосов
/ 26 ноября 2010

Используйте __FILE__ и __LINE__, чтобы получить текущий файл и номер строки.

Изменить: на основе вашего отредактированного вопроса. Вот простой способ сделать это, чтобы начать.

new.h

#define PRINT() print(__LINE__)

void print(int line)
{
    printf("Line number is %d",line);
}

фактический файл

   #include "new.h"
   int main()
   {
        PRINT();
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...