이 같은 ++ 뭔가 C에서 구조체를 가지고 :GDB 꽤 - 프린터 : 크기가 부모 구조체에 의해 알려진 경우 배열을 인쇄
struct HeapBlock {
char* data;
}
struct DataBlock {
int size;
HeapBlock hb;
}
이이 프레임 워크의 일부이며 여러 가지 다른 회원이, 헬퍼 등등 그러나 이들은 중요한 부분입니다.
NAME TYPE VALUE
DataBlock: DataBlock "Size 2000 @ 0x445343"
|--->size int 2000
|--->data HeapBlock {...}
|--->[0] char 0x34
|--->[1] char 0x45
....
<more values>
지금까지, 나는 HeapBlock을 받고에서 실패했습니다 별도의 자식으로 표시 할 :이 같은 파이썬 GDB 꽤-프린터 뭔가이를 보여 드리고자합니다. 나는 성공적으로 생산하는 반복자를 학대 한 :
NAME TYPE VALUE
DataBlock: DataBlock
|--->size int 2000
|--->[0] char 0x34
|--->[1] char 0x45
....
<more values>
이 다음 size
결과를 db["hb"]["data"]
에서 다음 DataBlockPrinter
의 children()
방법에 의해 반환 된 반복자에서 첫 번째 결과에 db["size"]
를 반환하고,에 의해 수행되었다.
HeapBlocks
에 대해 별도의 프린터를 사용하는 것을 시도했다, 그러나 문제는
HeapBlock
이 얼마나 큰 아무 생각이없는 것이있다 : 즉 부모 (
DataBlock
)에 저장되어 있기 때문에
HeapBlock
프린터도하지 않습니다 iterating을 멈출 때를 알아라.
그것은 여기 DataBlock
의 일환으로 인쇄 할 때 HeapBlock
꽤 프린터에 size
필드를 얻을 수 있습니까?
가의 조합처럼 보인다 타 방법을 발견 https://sourceware.org/bugzilla/show_bug.cgi?id=12806 및 https://sourceware.org/bugzilla/ show_bug.cgi? id = 16436? – Inductiveload