2017-01-31 10 views
2

런타임에 C 코드에서 소스 코드 줄 번호를 가져 오는 방법이 있습니까? 그 뒤에있는 생각은 소프트웨어가 평이한 C 언어로 작성되었다고 가정 해 봅시다. .exe 파일은 C에 대해 아무것도 모르는 사용자에게 배포됩니다. 오류가 있으면 사용자는 줄 번호를보고 제조업체에 오류를보고하여 제조업체 사이트에서 디버깅을 수행 할 수 있습니다. 난 단지 런타임 오류를 디버깅하고 그것을 실행하는 동안 소스 코드에서 해당 줄 번호를 얻을. 나는이 물건의 초보자이다.런타임에 C 코드에서 소스 코드 줄 번호를 가져 오는 방법이 있습니까?

+0

디버그 기호로 컴파일하고 gdb와 같은 디버거에서 코드를 실행하기에 충분하지 않습니까? –

+0

당신의 특정 질문에 답하는 dup입니다. 그러나 첫 번째 주석에서 지적한대로 디버깅하는 가장 좋은 방법은 디버거를 사용하는 것입니다. – kaylum

+0

런타임 중에 줄 번호를 묻습니다. 설명해 주시겠습니까? 나는 코딩의 초보자이다. –

답변

2

대신 gdb를 사용하십시오. 하지만 작동하는 것 같아요 :

if(someThingsWrong()) 
    printf("wrong at line number %d in file %s\n", __LINE__, __FILE__); 
3

GCC 컴파일러를 사용하는 경우 표준 사전 정의 매크로 -을 줄 번호 자리 표시 자로 사용할 수 있습니다.

컴파일러는 컴파일하는 동안 줄 번호를 채 웁니다.

예 : -

printf("%d",__LINE__);

+1

'__LINE__' 매크로는 GCC에만 국한되지 않습니다. –

2

당신은 항상 현재 파일 이름과 줄 번호로 확장 내장 매크로 __LINE____FILE__를 사용할 수 있습니다.

#include <stdio.h> 

int main(int argc, char *argv[]) 
{ 
    if(argc<2) 
    { 
     printf("Error: invalid arguments (%s:%d)\n", __FILE__, __LINE__); 
     return 0; 
    } 
    printf("You said: %s\n", argv[1]); 
    return 0; 
} 
+1

'__FILE__'과'__LINE__'은 다른 것들과 함께 사실상 필수 매크로입니다. C11 §6.10.8.1 1 참조. –