사용하는 언어에 따라 다릅니다.
Java (및 다른 JVM 언어)에서이 기능은 내장되어 있습니다. 던져지는 모든 예외에는 관련된 모든 메서드의 클래스, 메서드 및 줄 번호를 비롯한 스택 추적에 대한 참조가 있습니다.
throw "Error in " + __FUNCTION__ + ", line " + std::to_string(__LINE__);
: 당신이해야 할 모든 예를 들어, 예외를 던지는 또는 로그 메시지를 작성할 때
C 및 C++에서
exception.printStackTrace();
같은, 당신은 __FUNCTION__
또는 __LINE__
같은 전 처리기 매크로를 사용할 수있다 매크로는 현재 함수와 현재 행으로 대체됩니다.
모든 언어 및 모든 유형의 로깅에서 작동하는 방법을 찾고 있다면 좋은 해결책이 아닙니다. grep
같은 도구를 실행하여 일치하는 항목을 찾으려고 모든 소스 파일을 실행할 수 있습니다. 그러나 로그 메시지가 소스 코드에서 메시지가 작성된 위치의 문자열 리터럴로 나타나는 경우에만 작동합니다. 메시지에 변수 값 또는 다른 곳에 정의 된 상수가 포함될 가능성이 있기 때문에 가능성이 없습니다.
메이트가 로그에 표시되지 않으면 프로그램이 실패한 곳에서 올바르게 처리하지 못합니다. 그 라인을 찾는 자동 소스와 같은 것이 있다면 자동으로 자동 수정됩니다. – Maviles
나는 버그가있는 가능한 줄을 제안하는 데 도움이되는 도구를 만드는 것에 대해 이야기합니다. 그건 그렇고, 당신이 작업 로그의 올바른 세트가 같은 도구를 만들기 위해 필요합니다 분명하다. –