2012-06-14 4 views
0

컴파일 된 C 프로그램에서 전역 변수에 대한 정보를 얻어야합니다. 나는 here에서 비슷한 질문을했다.objdump/readelf가 변수 정보를 얻습니다.

내가 지금 가지고있는 문제는 변수 정보를 추출하려고하는 프로그램이 너무 커서 텍스트를 트리에 가져 오는 데 단지 4 초 밖에 걸리지 않는다는 것입니다 (readelf -w[i] file.out). 그러면 내가 필요로하는 곳으로 가기 위해 앞뒤로 뛰어 드는 나무를 파싱해야합니다. 예를 들어, 변수가 const unsigned char * volatile MyVariable 인 경우 트리의 5 개의 다른 노드로 이동해야하며 프로그램에 1000 개의 변수가 있으면 필요한 항목을 얻는 데 시간이 걸립니다.

내 질문은입니다. 어떻게하면 필요한 것을 얻기 위해 readelf 명령을 더 잘 활용할 수 있습니까? readelf -w[i] file.out 명령은 필요한 모든 정보 (모든 함수, 서브 루틴, 로컬 변수 등)를 제공합니다. 예를 들어 전역 변수를 얻으려면 해당 명령의 출력을 거치지 않고 단지 readelf -s --wide file.out 명령을 사용하여 변수 만 가져옵니다. 그 명령은 단지 변수의 이름을 줄 것이므로 변수가 정수인지 예를 들어 트리를 조사해야합니다.

2337 페이지의 this link에 제가 예를 들어 유형에 대한 정보를 얻는 방법의 예가 있습니다.

enter image description here

내가 필요로하고 여전히 몇 가지 버그가 무엇인지 분석하는 데 약 15 초 복용 오전 : 여기에 그림입니다. 휠을 재발 명하고 readelf 명령을 더 잘 사용할 필요가 없다면 좋을 것입니다.

+0

해결 했습니까? 'readelf'에서 구문 분석/추출 정보를 더 빨리 만들려고하십니까? – Zac

답변

0

당신은 DWARF 정보를 모두 파싱하는 Andy Wingo의 새로운 dltool 유틸리티를 사용해 볼 수 있습니다.

+0

나는 그것을 창문에서 분석 할 필요가있다. 창문에서 그것을 컴파일 할 수 있을지 모르지만 나는 그것을 시도 할 것이다. –

관련 문제