GDB-디버깅 기호

Debugging Symbol Table컴파일 된 바이너리 프로그램의 명령어를 해당 변수, 함수 또는 소스 코드의 행에 매핑합니다. 이 매핑은 다음과 같을 수 있습니다.

  • 프로그램 명령 ⇒ 항목 이름, 항목 유형, 원본 파일, 정의 된 줄 번호.

기호 테이블은 프로그램에 포함되거나 별도의 파일로 저장 될 수 있습니다. 따라서 프로그램을 디버그하려는 경우 프로그램을 디버그하는 데 필요한 정보가있는 기호 테이블을 만들어야합니다.

심볼 테이블에 대해 다음과 같은 사실을 추론 할 수 있습니다.

  • 기호 테이블은 프로그램의 특정 버전에 대해 작동합니다. 프로그램이 변경되면 새 테이블을 만들어야합니다.

  • 디버그 빌드는 종종 소매 (디버그가 아닌) 빌드보다 크고 느립니다. 디버그 빌드에는 기호 테이블 및 기타 보조 정보가 포함됩니다.

  • 직접 컴파일하지 않은 바이너리 프로그램을 디버깅하려면 작성자로부터 기호 테이블을 가져와야합니다.

GDB가 심볼 테이블에서 한 줄씩 모든 정보를 읽을 수 있도록하려면 조금 다르게 컴파일해야합니다. 일반적으로 우리는 프로그램을 다음과 같이 컴파일합니다.

gcc hello.cc -o hello

이를 수행하는 대신 아래와 같이 -g 플래그로 컴파일해야합니다.

gcc -g hello.cc -o hello