2016-07-28 2 views
-1

소스 코드에 문제가있는 경우 일반적으로 프로그래머는 로그를 수동으로 처리하여 소스 코드에서 문제를 식별하려고 시도합니다.로그 파일을 통해 잠재적 인 문제 찾기

하지만이 프로세스를 자동화 할 수 있습니까? 소스 코드에서 오류를 생성 할 가능성이있는 프로세스를 자동화 할 수 있습니까?

따라서, 예를 들어 :

로그 파일에 일부 문제가있는 경우. 그런 다음이 자동화 도구는이 문제가 소스 코드의 30,31,32,35,38 행으로 인해 발생했다고 말해야합니다. ABC

감사합니다.

+0

메이트가 로그에 표시되지 않으면 프로그램이 실패한 곳에서 올바르게 처리하지 못합니다. 그 라인을 찾는 자동 소스와 같은 것이 있다면 자동으로 자동 수정됩니다. – Maviles

+0

나는 버그가있는 가능한 줄을 제안하는 데 도움이되는 도구를 만드는 것에 대해 이야기합니다. 그건 그렇고, 당신이 작업 로그의 올바른 세트가 같은 도구를 만들기 위해 필요합니다 분명하다. –

답변

0

우리가 (단위) 테스트에 대해 말하는 것이 아니라고 가정하기 때문에 문제가 정확히 어디에서 발생하는지 보여줍니다.

그런 다음이 자동화 도구는이 문제가 우리가 비슷한 논의했다 나의 팀에서 소스 코드 ABC

에 30,31,32,35,38 행으로 인해 발생했다고 말하고 우리가 '무엇을해야 와 함께왔다 상위 5 가능성이 가장 높은 이슈 문서 (PlayBook)입니다. 실패 할 때마다 로그를 읽은 후, 우리는 대부분의 시간에 필요한 패턴이 있음을 발견했습니다. 따라서 10 가지 경우 중 8 가지 문제가 이러한 패턴 중 하나를 따른 것입니다. 따라서 Git의 도움을 받아 최신 변경 사항을 추적 할 수 있습니다. 변경 사항이 자주 발생하지 않는 경우이 방법이 효과적입니다.

0

사용하는 언어에 따라 다릅니다.

Java (및 다른 JVM 언어)에서이 기능은 내장되어 있습니다. 던져지는 모든 예외에는 관련된 모든 메서드의 클래스, 메서드 및 줄 번호를 비롯한 스택 추적에 대한 참조가 있습니다.

throw "Error in " + __FUNCTION__ + ", line " + std::to_string(__LINE__); 

: 당신이해야 할 모든 예를 들어, 예외를 던지는 또는 로그 메시지를 작성할 때

C 및 C++에서
exception.printStackTrace(); 

같은, 당신은 __FUNCTION__ 또는 __LINE__ 같은 전 처리기 매크로를 사용할 수있다 매크로는 현재 함수와 현재 행으로 대체됩니다.

모든 언어 및 모든 유형의 로깅에서 작동하는 방법을 찾고 있다면 좋은 해결책이 아닙니다. grep 같은 도구를 실행하여 일치하는 항목을 찾으려고 모든 소스 파일을 실행할 수 있습니다. 그러나 로그 메시지가 소스 코드에서 메시지가 작성된 위치의 문자열 리터럴로 나타나는 경우에만 작동합니다. 메시지에 변수 값 또는 다른 곳에 정의 된 상수가 포함될 가능성이 있기 때문에 가능성이 없습니다.