Index: tools/stats-viewer.py |
diff --git a/tools/stats-viewer.py b/tools/stats-viewer.py |
index 05cb76288282492ce31da264c9026f32f76acffe..ab8e28767d17558919ba3a41279477a615d55b0b 100755 |
--- a/tools/stats-viewer.py |
+++ b/tools/stats-viewer.py |
@@ -104,10 +104,12 @@ class StatsViewer(object): |
sys.exit(1) |
maps_file = open(maps_name, "r") |
try: |
- m = re.search(r"/dev/shm/\S*", maps_file.read()) |
- if m is not None and os.path.exists(m.group(0)): |
- self.data_name = m.group(0) |
- else: |
+ self.data_name = None |
+ for m in re.finditer(r"/dev/shm/\S*", maps_file.read()): |
+ if os.path.exists(m.group(0)): |
+ self.data_name = m.group(0) |
+ break |
+ if self.data_name is None: |
print "Can't find counter file in maps for PID %s." % self.data_name |
sys.exit(1) |
finally: |
@@ -414,7 +416,8 @@ class ChromeCounterCollection(object): |
individual counters contained in the file.""" |
_HEADER_SIZE = 4 * 4 |
- _NAME_SIZE = 32 |
+ _COUNTER_NAME_SIZE = 64 |
+ _THREAD_NAME_SIZE = 32 |
def __init__(self, data): |
"""Create a new instance. |
@@ -426,22 +429,23 @@ class ChromeCounterCollection(object): |
self.max_counters = data.IntAt(8) |
self.max_threads = data.IntAt(12) |
self.counter_names_offset = \ |
- self._HEADER_SIZE + self.max_threads * (self._NAME_SIZE + 2 * 4) |
+ self._HEADER_SIZE + self.max_threads * (self._THREAD_NAME_SIZE + 2 * 4) |
self.counter_values_offset = \ |
- self.counter_names_offset + self.max_counters * self._NAME_SIZE |
+ self.counter_names_offset + self.max_counters * self._COUNTER_NAME_SIZE |
def CountersInUse(self): |
"""Return the number of counters in active use.""" |
for i in xrange(self.max_counters): |
- if self.data.ByteAt(self.counter_names_offset + i * self._NAME_SIZE) == 0: |
+ name_offset = self.counter_names_offset + i * self._COUNTER_NAME_SIZE |
+ if self.data.ByteAt(name_offset) == 0: |
return i |
return self.max_counters |
def Counter(self, i): |
"""Return the i'th counter.""" |
- return ChromeCounter(self.data, |
- self.counter_names_offset + i * self._NAME_SIZE, |
- self.counter_values_offset + i * self.max_threads * 4) |
+ name_offset = self.counter_names_offset + i * self._COUNTER_NAME_SIZE |
+ value_offset = self.counter_values_offset + i * self.max_threads * 4 |
+ return ChromeCounter(self.data, name_offset, value_offset) |
def Main(data_file, name_filter): |