Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(68)

Side by Side Diff: tools/valgrind/memcheck_analyze.py

Issue 895853003: Update from https://crrev.com/314320 (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « tools/valgrind/memcheck/suppressions_mac.txt ('k') | tools/valgrind/valgrind_test.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2011 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2011 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 # memcheck_analyze.py 6 # memcheck_analyze.py
7 7
8 ''' Given a valgrind XML file, parses errors and uniques them.''' 8 ''' Given a valgrind XML file, parses errors and uniques them.'''
9 9
10 import gdb_helper 10 import gdb_helper
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
224 self._additional.append(description) 224 self._additional.append(description)
225 description = None 225 description = None
226 226
227 if node.localName == "suppression": 227 if node.localName == "suppression":
228 self._suppression = getCDATAOf(node, "rawtext"); 228 self._suppression = getCDATAOf(node, "rawtext");
229 229
230 def __str__(self): 230 def __str__(self):
231 ''' Pretty print the type and backtrace(s) of this specific error, 231 ''' Pretty print the type and backtrace(s) of this specific error,
232 including suppression (which is just a mangled backtrace).''' 232 including suppression (which is just a mangled backtrace).'''
233 output = "" 233 output = ""
234 output += "\n" # Make sure the ### is at the beginning of line.
235 output += "### BEGIN MEMORY TOOL REPORT (error hash=#%016X#)\n" % \
236 self.ErrorHash()
234 if (self._commandline): 237 if (self._commandline):
235 output += self._commandline + "\n" 238 output += self._commandline + "\n"
236 239
237 output += self._kind + "\n" 240 output += self._kind + "\n"
238 for backtrace in self._backtraces: 241 for backtrace in self._backtraces:
239 output += backtrace[0] + "\n" 242 output += backtrace[0] + "\n"
240 filter = subprocess.Popen("c++filt -n", stdin=subprocess.PIPE, 243 filter = subprocess.Popen("c++filt -n", stdin=subprocess.PIPE,
241 stdout=subprocess.PIPE, 244 stdout=subprocess.PIPE,
242 stderr=subprocess.STDOUT, 245 stderr=subprocess.STDOUT,
243 shell=True, 246 shell=True,
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 323
321 for frame in range(len(supplines)): 324 for frame in range(len(supplines)):
322 # Replace the always-changing anonymous namespace prefix with "*". 325 # Replace the always-changing anonymous namespace prefix with "*".
323 m = re.match("( +fun:)_ZN.*_GLOBAL__N_.*\.cc_" + 326 m = re.match("( +fun:)_ZN.*_GLOBAL__N_.*\.cc_" +
324 "[0-9a-fA-F]{8}_[0-9a-fA-F]{8}(.*)", 327 "[0-9a-fA-F]{8}_[0-9a-fA-F]{8}(.*)",
325 supplines[frame]) 328 supplines[frame])
326 if m: 329 if m:
327 supplines[frame] = "*".join(m.groups()) 330 supplines[frame] = "*".join(m.groups())
328 331
329 output += "\n".join(supplines) + "\n" 332 output += "\n".join(supplines) + "\n"
333 output += "### END MEMORY TOOL REPORT (error hash=#%016X#)\n" % \
334 self.ErrorHash()
330 335
331 return output 336 return output
332 337
333 def UniqueString(self): 338 def UniqueString(self):
334 ''' String to use for object identity. Don't print this, use str(obj) 339 ''' String to use for object identity. Don't print this, use str(obj)
335 instead.''' 340 instead.'''
336 rep = self._kind + " " 341 rep = self._kind + " "
337 for backtrace in self._backtraces: 342 for backtrace in self._backtraces:
338 for frame in backtrace[1]: 343 for frame in backtrace[1]:
339 rep += frame[FUNCTION_NAME] 344 rep += frame[FUNCTION_NAME]
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after
626 if len(args) == 0: 631 if len(args) == 0:
627 parser.error("no filename specified") 632 parser.error("no filename specified")
628 filenames = args 633 filenames = args
629 634
630 analyzer = MemcheckAnalyzer(options.source_dir, use_gdb=True) 635 analyzer = MemcheckAnalyzer(options.source_dir, use_gdb=True)
631 return analyzer.Report(filenames, None) 636 return analyzer.Report(filenames, None)
632 637
633 638
634 if __name__ == "__main__": 639 if __name__ == "__main__":
635 sys.exit(_main()) 640 sys.exit(_main())
OLDNEW
« no previous file with comments | « tools/valgrind/memcheck/suppressions_mac.txt ('k') | tools/valgrind/valgrind_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698