2013-05-03 3 views
0

나는 개인적으로 개발 한 OSX 프로그램을 검증하기 위해 정적 분석을 사용하고 있습니다. GDB를 사용하여 NSString의 메모리 주소를 찾았습니다. 그것을 NSString으로 구문 분석하고 그 내용을 읽을 수있는 방법이 있습니까? 심볼 테이블이 포함되지 않으므로 'po'가 작동하지 않습니다. 다른 모든 메모리 검사 명령은 작동하지 않습니다. 나는 문자열 리터럴이 어딘가에 객체 내에 포함되어 있다고 가정하고 있는데, 전체 객체 UTF-8/16을 덤프 할 수 있습니까?gdb print NSString 디버깅

+0

po 0x467954588 또는 실제 주소 인 경우 작동해야하는 것은 무엇이든간에. 초기화되지 않은 포인터뿐만 아니라 –

답변

1

상수 문자열 객체의 레이아웃이 적어도 두 가지입니다. 둘 다 객체의 문자열 바이트에 대한 포인터를 저장합니다. 한 레이아웃은 UTF-8을 사용하고 다른 레이아웃은 UTF-16을 사용한다고 생각합니다. x/x 및 x/s 명령의 올바른 세트는 내용을 인쇄 할 수 있어야하지만 디버거의 메모리 명령이 작동하지 않으면 도움이되지 않습니다.