2011-12-28 2 views
1

나는 GDB에 파이썬 스크립트를 입력하고 싶다.이 스크립트는 새로운 명령을 만들기 위해 사용된다. 이름은 'fp'로 가정하고, 주어진 메모리 영역에서 검색한다. 이 지역은이 메모리 영역에 포인터가있는 경우, 프로그램에있는 포인터가 포함되어 있는지 여부를 확인하는 명령 포인터가 가리키는 주소를 포인터의 주소를 인쇄하고 인쇄 할 수GDB는 주어진 메모리 영역에서 포인터를 찾는다.

예 :.

(gdb) fp 0x442032 100 (첫 번째 매개 변수는 시작 주소이며 100은 검색 할 크기입니다)

디버깅 프로그램에 S라는 포인터가있는 경우 10

는 그 주소는 0x442039의 주소 0x442033 포인트, 그래서 출력은 다음과 같아야합니다

0x442033 -> 0x442039

내 질문은 어떻게 할 수있다 나는 GDB를 사용하여 포인터의 주소를 찾는다. 이것을 실현하는 방법? 감사.

답변

1

GDB가 내장 된 find 명령을 찾고있을 수 있습니다. 문서 here. 디버깅 프로그램에 S라는 포인터가있는 경우 포인터 S, 그 주소가 거의 확실 0x442033하지있을 경우 정렬되지 않은 데이터를로드하는 것은 중요한 수행하기 때문에

, 그 주소는 0x442033

입니다 성능 위약.

주어진 메모리 ("find")에서 "any"포인터를 찾고자한다면 뭔가 잘못 될 수 있습니다 : 중요한 프로그램에는 100 또는 1000 개의 포인터가있을 것입니다. 관심있는 특정 포인터가 아닌 "모든"기호는 프로그램을 이해하지 못하는 기호 일 수 있습니다.

+0

선생님은 우리가 이렇게하기를 바란다 .... 혼란 스럽다. – user1118486

+0

포인터가 "s"또는 다른 것을 나타내는 것과 상관없이 주어진 메모리 영역에서 포인터를 찾고 싶다. 그 지역의 모든 포인터를 찾으십시오, 가능합니까? 할당은 다음과 같습니다 : python 스크립트를 사용하고 gdb 명령을 작성하여 주어진 메모리 영역에서 모든 포인터를 식별 할 수있게하십시오. – user1118486

관련 문제