mirror of
https://github.com/python/cpython.git
synced 2025-09-19 15:10:58 +00:00
tracemalloc: Fix slicing traces and fix slicing a traceback.
This commit is contained in:
parent
8f74a73ecb
commit
524be3056e
3 changed files with 18 additions and 6 deletions
|
@ -123,7 +123,6 @@ class TestTracemallocEnabled(unittest.TestCase):
|
||||||
self.assertEqual(len(traceback), 1)
|
self.assertEqual(len(traceback), 1)
|
||||||
self.assertEqual(traceback, obj_traceback)
|
self.assertEqual(traceback, obj_traceback)
|
||||||
|
|
||||||
|
|
||||||
def find_trace(self, traces, traceback):
|
def find_trace(self, traces, traceback):
|
||||||
for trace in traces:
|
for trace in traces:
|
||||||
if trace[1] == traceback._frames:
|
if trace[1] == traceback._frames:
|
||||||
|
@ -147,7 +146,6 @@ class TestTracemallocEnabled(unittest.TestCase):
|
||||||
tracemalloc.stop()
|
tracemalloc.stop()
|
||||||
self.assertEqual(tracemalloc._get_traces(), [])
|
self.assertEqual(tracemalloc._get_traces(), [])
|
||||||
|
|
||||||
|
|
||||||
def test_get_traces_intern_traceback(self):
|
def test_get_traces_intern_traceback(self):
|
||||||
# dummy wrappers to get more useful and identical frames in the traceback
|
# dummy wrappers to get more useful and identical frames in the traceback
|
||||||
def allocate_bytes2(size):
|
def allocate_bytes2(size):
|
||||||
|
@ -503,6 +501,14 @@ class TestSnapshot(unittest.TestCase):
|
||||||
self.assertEqual(str(stat),
|
self.assertEqual(str(stat),
|
||||||
'a.py:5: size=5002 B (+5000 B), count=2 (+1), average=2501 B')
|
'a.py:5: size=5002 B (+5000 B), count=2 (+1), average=2501 B')
|
||||||
|
|
||||||
|
def test_slices(self):
|
||||||
|
snapshot, snapshot2 = create_snapshots()
|
||||||
|
self.assertEqual(snapshot.traces[:2],
|
||||||
|
(snapshot.traces[0], snapshot.traces[1]))
|
||||||
|
|
||||||
|
traceback = snapshot.traces[0].traceback
|
||||||
|
self.assertEqual(traceback[:2],
|
||||||
|
(traceback[0], traceback[1]))
|
||||||
|
|
||||||
|
|
||||||
class TestFilters(unittest.TestCase):
|
class TestFilters(unittest.TestCase):
|
||||||
|
|
|
@ -182,8 +182,10 @@ class Traceback(Sequence):
|
||||||
return len(self._frames)
|
return len(self._frames)
|
||||||
|
|
||||||
def __getitem__(self, index):
|
def __getitem__(self, index):
|
||||||
trace = self._frames[index]
|
if isinstance(index, slice):
|
||||||
return Frame(trace)
|
return tuple(Frame(trace) for trace in self._frames[index])
|
||||||
|
else:
|
||||||
|
return Frame(self._frames[index])
|
||||||
|
|
||||||
def __contains__(self, frame):
|
def __contains__(self, frame):
|
||||||
return frame._frame in self._frames
|
return frame._frame in self._frames
|
||||||
|
@ -259,8 +261,10 @@ class _Traces(Sequence):
|
||||||
return len(self._traces)
|
return len(self._traces)
|
||||||
|
|
||||||
def __getitem__(self, index):
|
def __getitem__(self, index):
|
||||||
trace = self._traces[index]
|
if isinstance(index, slice):
|
||||||
return Trace(trace)
|
return tuple(Trace(trace) for trace in self._traces[index])
|
||||||
|
else:
|
||||||
|
return Trace(self._traces[index])
|
||||||
|
|
||||||
def __contains__(self, trace):
|
def __contains__(self, trace):
|
||||||
return trace._trace in self._traces
|
return trace._trace in self._traces
|
||||||
|
|
|
@ -16,6 +16,8 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- tracemalloc: Fix slicing traces and fix slicing a traceback.
|
||||||
|
|
||||||
- Issue #20354: Fix an alignment issue in the tracemalloc module on 64-bit
|
- Issue #20354: Fix an alignment issue in the tracemalloc module on 64-bit
|
||||||
platforms. Bug seen on 64-bit Linux when using "make profile-opt".
|
platforms. Bug seen on 64-bit Linux when using "make profile-opt".
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue