2012-03-16 6 views
3

vxWorks API symFind()를 사용하여 전역 변수의 이름을 알 수있는 주소를 가져올 수 있습니다. 심볼의 해당 크기를 알 수있는 방법이 있습니까?심볼의 데이터 크기

사실 검색된 기호는 어떤 유형일 수도 있으므로 런타임에 찾아야합니다. 그래서 기본적으로 sizeof 지시문을 사용할 수 없습니다.

+0

휴. 나는 SymLib.h의 캐시 된 사본을 사용하여 이것을 추적해야했다. C API를 사용하고 있다면 반환 된 변수의 크기를 'sizeof'로 지정하지 않습니까? – MrGomez

+0

@MrGomez 사실 검색된 기호는 어떤 유형이든 될 수 있으므로 런타임에 찾아야합니다. 그래서 기본적으로 sizeof 지시문을 사용할 수 없습니다. – greydet

+0

@ greydet : 기호의 _ 유형 _을 모른다면 사용할 수 없습니다. 기간. Ergo, 타입을 알 수 있다고 생각합니다. 'sizeof'를 사용할 수 있습니다. 이러한 가정이 잘못된 경우, 어쨌든이 함수를 유용하게 사용할 수 없습니다. –

답변

2

입니다 선험적 불가능, 당신이 기호를 추가 할 때, 당신은 그것의 크기를 지정하지 때문에 다음 symAdd 기능은 단지 SYMTAB_ID, 이름, 주소, 유형 ID 및 그룹 ID를합니다. 미리 정의 된 유형 ID 중 일부는 크기를 의미하지만 주소에서 데이터를 검토하고 크기를 추정 할 수있는 충분한 정보를 암시하지만 다른 미리 정의 된 유형 ID는 그렇지 않습니다. 모두이더라도 API는 여전히 사용자 정의 유형에 대해 알지 못합니다 (단지 불투명 한 정수 식별자로 간주되기 때문에).

+0

심볼 길이에 대한 정보가 심볼 테이블에서 사용 가능하지 않습니다 ... 심볼의 길이를 검색하기 위해 객체 파일에 nm 명령의 출력을 사용합니다. 그렇게 간단하지는 않지만 일을 덜합니다! – greydet

관련 문제