gdb를 사용하여 주소를 회선으로 변환
다음과 같은 제거된 응용 프로그램에 의해 생성된 스택 추적이 있습니다.
*** Check failure stack trace: ***
@ 0x7f0e442d392d (unknown)
@ 0x7f0e442d7b1f (unknown)
@ 0x7f0e442d7067 (unknown)
@ 0x7f0e442d801d (unknown)
@ 0x7f0e457c55e6 (unknown)
@ 0x7f0e457c5696 (unknown)
@ 0x4e8765 (unknown)
@ 0x4a8b43 (unknown)
@ 0x7f0e43197ced (unknown)
@ 0x4a6889 (unknown)
그리고 실행 파일과 모든 라이브러리(디버깅 정보와 함께 컴파일됨)의 비스트립 버전이 있습니다.그런데 주소를 어떻게 파일과 라인 번호로 변환할 수 있습니까?
제가 시도한 것은 다음과 같습니다.
gdb
set solib-absolute-prefix /path/to/non-stripped/edition/of/root/filesystem/sysroot/
file /path/to/non-stripped/edition/of/root/filesystem/sysroot/usr/bin/my-buggy-app
info line *0x7f0e457c5696
파일 명령을 입력하면 파일에서 기호만 로드되고 사용되는 모든 라이브러리는 로드되지 않습니다.이것을 할 수 있는 방법이 있습니까?
"info line" 명령어는 다음과 같습니다.
주소 0x7f0e442d801d에 사용할 수 있는 라인 번호 정보가 없습니다.
주소가 공유 라이브러리 중 하나에 있기 때문이라고 생각합니다. 하지만 그 중 어느 라이브러리에 있는지 어떻게 알 수 있을까요?
OP에 따라 주소에서 코드의 소스 라인을 찾는 GDB의 명령은 다음과 같습니다.
info line *0x10045740
편집: 특정 조건에서 작동하지 않는 "info symbol 0x10045740"을 교체했습니다(Thomasa88 감사합니다).
그런데 주소를 어떻게 파일과 라인 번호로 변환할 수 있습니까?
기본 실행 파일의 경우(다음과 같은 주소)0x4e8765
) 다음 작업을 수행합니다.
addr2line -e /path/to/non-stripped/.../my-buggy-app \
0x4a6889 0x4a8b43 0x4e8765
사실, 당신은 당신이 빼기를 원할지도 모릅니다.5
(일반적인 길이)CALL
위의 모든 주소로부터).
공유 라이브러리의 주소는 라이브러리의 로드 주소를 알아야 합니다.
응용 프로그램에서 생성된 경우core
파일, 그 다음(gdb) info shared
라이브러리가 로드된 위치를 알려줍니다.
코어 파일을 가져오지 않았고 응용 프로그램이 필요한 매핑을 인쇄하지 않은 경우
- 당신은 그 정보를 인쇄할 수 있도록 애플리케이션을 수정해야 합니다(스택 추적이 없으면 대부분 쓸모가 없습니다).
- 여전히 추측할 수 있습니다. 실행 파일의 코드를 보십시오.
0x4e8760
이여야 합니다.CALL
어떤 기능에 대한 지시.이제 해당 기능이 어떤 라이브러리에 있는지 확인하고 라이브러리에서 주소를 찾습니다(를 통해).nm
만약 당신이 운이 좋다면, 그 주소는 근처에 있습니다.0xNc56NN
이제 모든 라이브러리의 로드 주소를 추측할 수 있습니다.0x7f0e457NNNNNN
다음 기간 동안 반복합니다.0x7f0e457c55e1
그리고 당신은 도서관의 로드 주소를 찾을 수 있습니다.0x7f0e442dNNNN
.
언급URL : https://stackoverflow.com/questions/8545931/using-gdb-to-convert-addresses-to-lines
'programing' 카테고리의 다른 글
Gdata package perl 문제 (0) | 2023.07.07 |
---|---|
웹소켓, Angular 2 및 JSON 웹토큰 인증 (0) | 2023.07.07 |
'git commit'이 변경사항을 저장하지 않는 이유는 무엇입니까? (0) | 2023.07.07 |
SQL Server에서 날짜+시간에서 날짜를 가져오는 가장 효율적인 방법은 무엇입니까? (0) | 2023.07.07 |
SQL 개발자 오류, "모듈 사용 안 함 및 계속" (0) | 2023.07.07 |