문제

상징적 디버거가 어떻게 작동하는지 이해하고 싶습니다. 디버그 심볼 테이블이란 무엇이며 소스 수준 디버깅을 용이하게하는 방법. 나는 Debuggers의 장면 행동에 대해 매우 잊어 버렸습니다. GCC에 '-g'옵션을 제공 할 때 실제로 발생하는 일, 객체 파일에 작성되는 것 및 그러한 복잡성을 제공합니다. 커뮤니티가 더 많은 정보를 얻을 수있는 출처로 설명하고 지시 할 수 있다면 기뻐할 것입니다.

도움이 되었습니까?

해결책

기호 파일은 모든 정의 된 글로벌 변수 및 함수의 목록 일뿐만 아니라 모듈의 시작 부분에서 오프셋 일뿐입니다. 또한 모든 구조 목록이 있으며 해당 분야를 설명합니다.

이렇게하면 GDB/WINDBG가로드되면 EIP (현재 명령)를보고 주소를 (someFunc+0x25)와 같은 것으로 매핑 할 수 있습니다. 물론, 대부분의 기호에는 줄 정보도 인코딩되어 있으므로 한 걸음 더 나아가 "일부 핀+0x25는 foo.cpp line 57에 가장 가깝습니다"라고 말할 수 있습니다.

다른 팁

GCC에서 생성 한 모든 디버깅 정보와 디버거가 어떻게 사용하는지에 대한 심층적 인 설명은 Dwarf Debugging Specification을 확인하십시오.

드워프 3 디버깅 사양

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top