Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 # Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 import logging | 5 import logging |
| 6 import os | 6 import os |
| 7 import signal | 7 import signal |
| 8 import subprocess | 8 import subprocess |
| 9 import sys | 9 import sys |
| 10 import time | 10 import time |
| (...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 155 def BoringCallers(mangled, use_re_wildcards): | 155 def BoringCallers(mangled, use_re_wildcards): |
| 156 """Return a list of 'boring' function names (optinally mangled) | 156 """Return a list of 'boring' function names (optinally mangled) |
| 157 with */? wildcards (optionally .*/.). | 157 with */? wildcards (optionally .*/.). |
| 158 Boring = we drop off the bottom of stack traces below such functions. | 158 Boring = we drop off the bottom of stack traces below such functions. |
| 159 """ | 159 """ |
| 160 | 160 |
| 161 need_mangling = [ | 161 need_mangling = [ |
| 162 # Don't show our testing framework: | 162 # Don't show our testing framework: |
| 163 ("testing::Test::Run", "_ZN7testing4Test3RunEv"), | 163 ("testing::Test::Run", "_ZN7testing4Test3RunEv"), |
| 164 ("testing::TestInfo::Run", "_ZN7testing8TestInfo3RunEv"), | 164 ("testing::TestInfo::Run", "_ZN7testing8TestInfo3RunEv"), |
| 165 ("testing::internal::Handle*ExceptionsInMethodIfSupported", | 165 ("testing::internal::Handle*ExceptionsInMethodIfSupported*", |
|
Timur Iskhodzhanov
2011/11/24 15:01:14
Dr. Memory prints out the <...> template list whic
| |
| 166 "_ZN7testing8internal3?Handle*ExceptionsInMethodIfSupported*"), | 166 "_ZN7testing8internal3?Handle*ExceptionsInMethodIfSupported*"), |
| 167 | 167 |
| 168 # Depend on scheduling: | 168 # Depend on scheduling: |
| 169 ("MessageLoop::Run", "_ZN11MessageLoop3RunEv"), | 169 ("MessageLoop::Run", "_ZN11MessageLoop3RunEv"), |
| 170 ("MessageLoop::RunTask", "_ZN11MessageLoop7RunTask*"), | 170 ("MessageLoop::RunTask", "_ZN11MessageLoop7RunTask*"), |
| 171 ("RunnableMethod*", "_ZN14RunnableMethod*"), | 171 ("RunnableMethod*", "_ZN14RunnableMethod*"), |
| 172 ("RunnableFunction*", "_ZN16RunnableFunction*"), | 172 ("RunnableFunction*", "_ZN16RunnableFunction*"), |
| 173 ("DispatchToMethod*", "_Z*16DispatchToMethod*"), | 173 ("DispatchToMethod*", "_Z*16DispatchToMethod*"), |
| 174 ("base::internal::Invoker*::DoInvoke*", | 174 ("base::internal::Invoker*::DoInvoke*", |
| 175 "_ZN4base8internal8Invoker*DoInvoke*"), # Invoker{1,2,3} | 175 "_ZN4base8internal8Invoker*DoInvoke*"), # Invoker{1,2,3} |
| (...skipping 29 matching lines...) Expand all Loading... | |
| 205 if sys.platform.startswith("cygwin"): | 205 if sys.platform.startswith("cygwin"): |
| 206 p = subprocess.Popen(["cygpath", "-m", path], | 206 p = subprocess.Popen(["cygpath", "-m", path], |
| 207 stdout=subprocess.PIPE, | 207 stdout=subprocess.PIPE, |
| 208 stderr=subprocess.PIPE) | 208 stderr=subprocess.PIPE) |
| 209 (out, err) = p.communicate() | 209 (out, err) = p.communicate() |
| 210 if err: | 210 if err: |
| 211 logging.warning("WARNING: cygpath error: %s", err) | 211 logging.warning("WARNING: cygpath error: %s", err) |
| 212 return out.strip() | 212 return out.strip() |
| 213 else: | 213 else: |
| 214 return path | 214 return path |
| 215 | |
| 216 ############################ | |
| 217 # Common output format code | |
| 218 | |
| 219 def PrintUsedSuppressionsList(suppcounts): | |
|
Timur Iskhodzhanov
2011/11/24 15:01:14
TODO: re-use this for Valgrind and TSan and HeapCh
| |
| 220 """ Prints out the list of used suppressions in a format common to all the | |
| 221 memory tools. If the list is empty, prints nothing and returns False, | |
| 222 otherwise True. | |
| 223 | |
| 224 suppcounts: a dictionary of used suppression counts, | |
| 225 Key -> name, Value -> count. | |
| 226 """ | |
| 227 if not suppcounts: | |
| 228 return False | |
| 229 | |
| 230 print "-----------------------------------------------------" | |
| 231 print "Suppressions used:" | |
| 232 print " count name" | |
| 233 for (name, count) in sorted(suppcounts.items(), key=lambda (k,v): (v,k)): | |
| 234 print "%7d %s" % (count, name) | |
| 235 print "-----------------------------------------------------" | |
| 236 sys.stdout.flush() | |
| 237 return True | |
| OLD | NEW |