Skip to content

Commit 5aed3d9

Browse files
committed
Update debugger visualizers
1 parent 561496f commit 5aed3d9

3 files changed

Lines changed: 13 additions & 4 deletions

File tree

src/etc/gdb_providers.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,13 @@ def display_hint():
163163
class StdVecDequeProvider(printer_base):
164164
def __init__(self, valobj):
165165
self._valobj = valobj
166-
self._head = int(valobj["head"])
166+
167+
head = valobj["head"]
168+
169+
# BACKCOMPAT: rust 1.95
170+
if head.type.code != gdb.TYPE_CODE_INT:
171+
head = head[ZERO_FIELD]
172+
self._head = int(head)
167173
self._size = int(valobj["len"])
168174
# BACKCOMPAT: rust 1.75
169175
cap = valobj["buf"]["inner"]["cap"]

src/etc/lldb_providers.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -987,7 +987,7 @@ def StdSliceSummaryProvider(valobj, dict):
987987
class StdVecDequeSyntheticProvider:
988988
"""Pretty-printer for alloc::collections::vec_deque::VecDeque<T>
989989
990-
struct VecDeque<T> { head: usize, len: usize, buf: RawVec<T> }
990+
struct VecDeque<T> { head: BufferIndex, len: usize, buf: RawVec<T> }
991991
"""
992992

993993
def __init__(self, valobj: SBValue, _dict: LLDBOpaque):
@@ -1016,7 +1016,10 @@ def get_child_at_index(self, index: int) -> SBValue:
10161016
return element
10171017

10181018
def update(self):
1019-
self.head = self.valobj.GetChildMemberWithName("head").GetValueAsUnsigned()
1019+
head = self.valobj.GetChildMemberWithName("head")
1020+
if head.GetType().num_fields == 1:
1021+
head = head.GetChildAtIndex(0)
1022+
self.head = head.GetValueAsUnsigned()
10201023
self.size = self.valobj.GetChildMemberWithName("len").GetValueAsUnsigned()
10211024
self.buf = self.valobj.GetChildMemberWithName("buf").GetChildMemberWithName(
10221025
"inner"

src/etc/natvis/liballoc.natvis

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
<If Condition="i == len">
2424
<Break/>
2525
</If>
26-
<Item>(($T1*)buf.inner.ptr.pointer.pointer)[(i + head) % buf.inner.cap.__0]</Item>
26+
<Item>(($T1*)buf.inner.ptr.pointer.pointer)[(i + head.__0) % buf.inner.cap.__0]</Item>
2727
<Exec>i = i + 1</Exec>
2828
</Loop>
2929
</CustomListItems>

0 commit comments

Comments
 (0)