2016-08-12 3 views
0

중단 점에있는 동안 LLDB 내에서 인쇄해야하는 구조체의 동적 할당 배열이 있습니다. 이 모든 것이 ObjC 외부의 일부 순수 C 코드에서 발생합니다.LLDB : 구조체의 동적 배열을 출력하는 사용자 정의 함수를 만드는 방법

인쇄 작업을 수행하는 정적 함수를 작성했으며 LLDB에서 호출 할 수 있지만 자동 종료 전에 약 60 줄만 인쇄합니다. 때로는 LLDB에서 Enter를 다시 누르지 않으면 인쇄되지 않습니다. 나는 이것이 어떻게 든 스레딩에 의한 것이라고 가정하지만, 아무런 성공도없이 그 함수 내에서 dispatch_async를 시도했다. 아무 것도 출력하지 않을 것이다.

따라서 필자는 디버깅 작업에 필수적인 대체 글꼴 (아마도 파이썬 스크립트)을 찾고 있습니다.

답변

1

당신은 같은 대해 이야기 :

struct MyStruct {/* some stuff */}; 
struct MyStruct *struct_ptr = malloc(100 * sizeof(struct MyStruct)); 

당신이했던 것처럼 당신은 struct_ptr 인쇄 할 :

struct MyStruct struct_arr[100]; 

당신이 엑스 코드 8.0 전에 lldb에있는 경우, 당신은이 작업을 수행 할 것 함께 :

(lldb) 메모리

및 Y의 경우 100 -t MYSTRUCT의 struct_ptr

-c를 읽어 parray

(lldb) 100 struct_ptr

+0

내가 인쇄 출력보다 효율적으로 제어를 얻을 수 있었으면했지만,이 훌륭하게 작동합니다 OU는 새 parray 명령을 사용할 수 있으며, 엑스 코드 8.0 베타의 하나가! 언급 할 가치가있는 한 가지는 더 큰 배열 (또는 더 큰 구조체)의 경우 set set target.max-memory-read-size 1048576 (또는 데이터를 보유 할만큼 충분히 큰 값)이 필요하다는 것입니다. – CatalinM

+0

parray는'expression -Z - '의 별칭 일 뿐이므로 다른 형식 옵션을 사용하려면 명령의 철자를 완전히 입력하고 "expression"명령이 제공하는 형식 옵션을 추가 할 수 있습니다. 'help expression'을보고'--' 앞에 옵션을 넣어야한다는 것을 기억하십시오. –