2013-04-15 3 views
1

가능합니까? 그렇다면 오류 출력에 마지막 몇 줄의 코드가 포함될 수 있습니까? 나는 __LINE____FUNC__에 대한 GNU g ++의 지원에 대해 알고 있지만 줄 번호를 int로, 함수 이름을 문자열로 제공합니다. - 프로그램의 코드가 실패한 함수 또는 프로그램에서 실행 한 마지막 명령을 덤프하고 싶습니다. .오류 출력에 마지막 두 줄의 코드를 포함하십시오.

나는 코드베이스를 구문 분석하고 그들이 넣은 함수의 문자열 구조를 삽입하는 m4 스크립트를 작성하고 있다고 생각했다.

기타/더 좋은 아이디어가 있습니까?

+0

"실패한 코드의 기능을 덤프"한다는 것은 무엇을 의미합니까? '__func__' (또는 GCC의'__FUNCTION__')이 함수명을 얻지 못했습니까? _call stack_ 함수를 원합니까? –

+0

함수 자체의 전체 코드 또는 오류가 잡히기 전에 실행 된 최소한 두 줄 이상의 코드를 출력하려고합니다. – user2068060

+0

그래서 디버깅 할 수있는 디버거를 구현하고 싶습니까? –

답변

1

코드를 전혀 변경하지 마십시오. __LINE____FUNC__을 사용하고 오류 출력을 처리하십시오. 즉, my-prog > $(tty) 2>&1 | post-process으로 프로그램을 실행하십시오. 여기서 post-process은 코드베이스에 액세스 할 수 있으며 원하는 텍스트를 생성 할 수 있습니다. 후 처리에서 함수 이름과 행 번호를 쉽게 찾을 수 있도록 태그를 추가하여 코드를 약간 수정할 수 있습니다.

관련 문제