2010-11-26 4 views
0

나는 C로 프로그램을 적어 놓았고 로그 파일을 만들려고합니다.로그 파일의 c 디버깅

내가 직면하는 문제는 파일의 각 줄 출력을 인쇄하는 동안 해당 줄의 실행 시간이나 코드의 줄 번호와 같은 몇 가지 고유 한 기능을 작성하고 싶다는 것입니다.

이 두 가지를 알 수있는 방법이 있습니까?

다른 방법으로 다른 기능을 사용 하시겠습니까? 내가 원하는 것은 사용자가 코드의 특정 부분이 실행되고 있다는 것을 알게되는 로그 파일을 보는 것이다. 나는 리눅스 작업 따라서 GCC 컴파일러를 사용하고

감사


는 ....

나는 헤더 파일을 만든 그 안에 내가 __LINE__를 작성하는 테스트 목적입니다. 내가하고 싶은 것은 프로그램에서 헤더 파일의이 기능을 포함 시켰을 때 함수가있는 곳에 줄 번호가 인쇄된다는 것입니다. 하지만 대신 헤더 파일 printf 문의 줄 번호를 얻습니다.

파일의 줄 번호를 가져 오려면 어떻게해야합니까? 이 아래 단지 시험 형식입니다 : - .... 그런

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

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

내가 인쇄해야 행 번호는 실제 파일의 즉 지금 일어나는 new.h하지 않는 것이 원하는

답변

2

대부분의 C 컴파일러는 GCC를 사용하여 __LINE__, __FUNCTION__ 등의 코드를 사용할 수 있습니다. 자세한 내용은 컴파일러 설명서를 확인하십시오. 타임 스탬프를 받으려면 작업중인 시스템을 알려줘야합니다.

+0

안녕하세요 좀 더 도와 드릴 수 있습니다 .... 나는 줄 번호를 인쇄 할 헤더 파일이 있습니다. 하지만 내가 얻는 문제는 내가 실행중인 다른 파일의 줄 번호를 인쇄하고 싶다는 것이다. 이것을하는 방법 .... –

+0

이것을위한 매크로를 작성하십시오. 예. #define print() printf ("줄 번호는 % d", __ LINE__) – JustSid

+0

나는 이것을 실제 파일에 써야한다고 생각하지만 나는 그것을 원하지 않는다. 나는 누군가가 내 프로그램을 실행하면 줄 번호 인쇄의 가치를 얻었고 그 자신은 매크로 자체를 포함시켜야한다고 주장했다 .... 감사합니다 ... –

2

함수가 실행 된 실제 날짜와 시간을 원하면 asctime()을 시도하십시오. 완료 방법에 대한 좋은 참조가 있습니다 here.

Sat May 20 17:36:17 2000과 비슷한 것을 출력합니다. 프로그램이 시작된 이후 시간을 초 단위로 나타내려면, 유닉스 에포크에서 프로그램 시작 시간을 초 단위로 유지하는 int startTime = time()과 같은 변수를 사용하십시오. 그런 다음 프로그램 시작 후 초를 얻으려면 startTime - time()을 인쇄하십시오.

+0

안녕하세요 ...하지만 로깅 목적으로는 프로그램 자체가 유용하지 않으므로 몇 초 만에 끝났습니다. 그래서 코드가 먼저 실행 된 차이점을 말할 방법이 없을 것입니다. 잘못된 경우 수정하십시오. –

+0

SDL을 사용한다면'SDL_GetTicks()'를 사용하여 밀리 초 단위로 시간을 얻을 수 있지만 당신이 그것을 언급하는 부족 때문에 그것을 사용하고 있는지 의심. 미안해 더 도움이 될 수 없어! 또한 다른 답변 게시자들에게'__FILE__' 및'__LINE__' 키워드를 주셔서 감사합니다. – Bojangles

+0

문제 없습니다! SO 커뮤니티는 항상 도움을주기 위해 여기에 있습니다! – Bojangles

0

__FILE____LINE__을 사용하면 현재 파일과 줄 번호를 가져올 수 있습니다.

편집 : 편집 한 질문을 기반으로합니다. 시작하는 간단한 방법이 있습니다.

new.h

#define PRINT() print(__LINE__) 

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

실제 파일

은 "__LINE__"로 줄 번호를 얻을 수 GCC에서
#include "new.h" 
    int main() 
    { 
     PRINT(); 
    } 
+0

이봐, 좀 더 도와 줄 수 있니? .. 나는 라인 번호를 인쇄하고있는 헤더 파일을 가지고있다. 하지만 내가 얻는 문제는 내가 실행중인 다른 파일의 줄 번호를 인쇄하고 싶다는 것이다. 어떻게하는지 .... –

+0

#define을 사용하여'__LINE__'을 사용하는 매크로를 만듭니다. '__LINE__'은 .h가 아니라 .c의 줄입니다. .h에서 함수 안에서'__LINE__'을 사용하면 .h의 줄 번호가됩니다. 내가 오해하고 있다면, 코드를 게시하십시오. –

+0

편집을 위해 구현 방법을 알 수 있습니까? 고맙습니다. .... –

0

. 파일 이름 - "__FILE__".

실행 시간을 계산하려면 시작 시간을 기억하고 끝에 시간을 가져 와서 빼십시오.

0

줄 번호는 전처리 매크로 __LINE__에서 얻을 수 있습니다. 파일은 __FILE__입니다. 시간은 관련 OS 라이브러리를 사용하십시오.

또는이를 지원하는 로깅 라이브러리를 사용하십시오.