5 개의 오류 후에 GCC를 중지하도록 지시하는 방법은 무엇입니까?


80

5 개의 오류가 발견 된 후 GNU C ++ 컴파일러에 중지하도록 지시 할 수 있습니까? 문서에서 찾을 수 없습니다.

답변:


94

명령 줄 옵션 은 컴파일러가 N 오류 후에 포기하도록 지시합니다 . 이 옵션은 GCC 4.6 이상에 있습니다.-fmax-errors=N

명령 줄 옵션 -Wfatal-errors은 컴파일러가 한 번의 오류 후에 포기하도록 지시합니다 . 이 옵션은 GCC 4.0 이상에 있습니다.

두 경우 모두를 지정하지 않는 한 경고는 제한에 포함되지 않습니다 -Werror.


5
나는이 +1을주고 싶지만에 대한 진술에 대해서는 -Werror. 대부분의 경고는 버그가있는 코드를 나타 내기 때문에 경고는 오류 인 것처럼 처리 되어야 한다고 생각합니다 .
greyfade 2010

3
@greyfade, 경고는 일반적으로 반드시 수정해야한다고 생각하지만, 안타깝게도 gcc의 경고 중 일부는 최적화 수준, 시스템 헤더의 내용 및 기타 쉽게 제어 할 수없는 기타 사항에 따라 트리거되거나 그렇지 않을 수 있습니다. . 따라서 표준 빌드 플랫폼에서 모든 경고를받을 수 있지만 일부 불량한 schmuck은 더 이국적인 환경에서 빌드하려고 시도하고 폭발합니다.
zwol 2010

2
@Zack, -Wno-system-headers가 무엇을위한 것이 아닌가?
Sam Miller

2
컴파일러가 -Wuninitialized잘못된 긍정을 얻는 변수를 초기화하지 않는 것에 대해 내가 들었던 주장 은 다음과 같습니다. 그것은 죽었지 만 증명할 수없는 저장 명령에 I- 캐시를 낭비합니다. 경고를 긍정적으로 만드는 것이 변경되면 valgrind가이를 포착하기를 원합니다.
zwol 2010-07-12

3
불행히도 링커는 -fmax-errors플래그를 따르지 않습니다 (arm-none-eabi-gcc 5.4.1 기준). 나는 옵션을 사용 -finstrument-functions하고 있었고 정의되지 않은 __cyg_profile_func_enter기능으로 인해 수백 개의 오류가 발생했습니다 .
lorcap

45

gcc 옵션을 사용할 수 있습니다.

-fmax-errors=5

이 목적을 위해.


9
@Telthien 왜? 이것은 나에게 대답 인 것 같습니다.

13
@Telthien stackoverflow.com/questions/how-to-answer 는 " 요청자가 올바른 방향으로 나아가도록하는 모든 답변이 도움이됩니다"와 "간결함이 허용됩니다"라고 말합니다. 답변은 솔루션을 제공하도록 설계되었으며 때로는 한 문장으로도 완료 될 수 있습니다.

짧게 유용하면 대답을 길게 할 이유가 없습니다. 특히 지나치게 길거나 tldr을 요구하기 위해서가 아닙니다.
n611x007 2013 년

1
답변을 작성한 이후 새로운 기능이 추가되었음을 알려 주셔서 감사합니다.
zwol

5

이러한 옵션도 환영합니다. 지금은 처음 5 개의 오류를 얻기 위해 다음 해결 방법을 사용하고 있습니다.

<make> 2>&1|grep error|head -5

1

당신이 왜 이것을하고 싶어하는지 물어봐야합니다. 때로는 코드에 존재하는 오류가 처음이 아니거나 처음 5 개의 오류에서 발견되는 경우도 있습니다. 때로는 그 이상이며 목록을 아래로 스크롤해야만 인식 할 수 있습니다. 더 나은 방법은 컴파일 시간에 문제가있는 경우 코드를 분할하여 더 작은 라이브러리에 배치하는 것입니다. 또는 명령 줄 화면에서 스크롤되는 것이 염려되는 경우 '>>'연산자를 사용하여 메시지를 파일로 파이프합니다.


1
It's just a matter of error log readability. 5 errors are more than enough to understand the problem, at least in my case :)
yegor256

14
Really? My experience has been just the opposite -- especially in C++, unless I'm doing specific sorts of refactoring work that create lots of discrete errors (changing the arguments to a commonly-used method, e.g.) the very first error is likely to be the only one that's any use at all.
zwol

@ FaZend.com 나는 그 때 대답하지 않은 것을 제공해서 유감입니다. 아래 Zack의 대답은 아마도 5 개의 오류가 출력 된 후 프로세스를 종료하고 이러한 오류를 구문 분석하는 작은 스크립트를 작성하지 않는 한 얻을 수있는 최선의 방법 일 것입니다. (하지만 나는이 문에 매우 무지 수 있습니다.)
특별한 존재가 될거야

1
사람들은이 문제에 대해 매우 제한된 상상력을 가지고있는 것 같습니다. 이 시나리오는 어떻습니까? 처음으로 프로그램을 새로운 환경으로 이식했습니다. 몇 가지 오류가 발생하고 컴파일이 중단됩니다. 이전 환경과 새 환경 사이에 얼마나 많은 비 호환성이 있는지 알 수 없습니다. 알고 싶은 것은 상황이 얼마나 나쁜지, 코드에 얼마나 많은 문제가 있는지입니다. 하나의 거대한 목록에 모든 오류를 가져 와서 모든 오류를 수정하는 데 걸리는 시간을 추정 할 수 있기를 원합니다.
Phill Apley 2013 년

4
@PhillApley 문제는 단일 오류가 종종 연속 오류 (일부는 수많은 STL 제안 포함)를 유발하므로 오류 및 경고의 양으로 판단하면 필요한 노력을 과대 평가하고 줄 수 있다는 것입니다. 쪽으로.
Evgeni Sergeev
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.