Browse Source

backtrace resolution tool


git-svn-id: svn://svn.sphinxsearch.com/sphinx/trunk@2450 406a0c4d-033a-0410-8de8-e80135713968
shodan 15 years ago
parent
commit
c0ff9deafb
1 changed files with 42 additions and 0 deletions
  1. 42 0
      misc/resolve.py

+ 42 - 0
misc/resolve.py

@@ -0,0 +1,42 @@
+#
+# $Id$
+#
+
+import sys, re
+
+if len(sys.argv)!=3:
+	print 'Usage: python resolve.py BACKTRACE SYMBOLS'
+	sys.exit(0)
+
+def myopen(name):
+	fh = open(name, 'r')
+	if not fh:
+		print 'FATAL: failed to open %s' % name
+		sys.exit(1)
+	return fh
+
+syms = []
+fp = myopen(sys.argv[2])
+for line in fp.readlines():
+	line = line.rstrip()
+	match = re.match('([0-9a-fA-F]+) \w ', line)
+	if match:
+		addr = int(match.group(1), 16)
+		name = line[len(match.group(0)):]
+		syms.append([addr, name])
+fp.close()
+
+fp = myopen(sys.argv[1])
+for line in fp.readlines():
+	line = line.rstrip()
+	match = re.search('\[0x([0-9a-fA-F]+)\]', line)
+	if match:
+		addr = int(match.group(1), 16)
+		resolved = '???'
+		for i in range(len(syms)-1):
+			if syms[i][0]<=addr and addr<syms[i+1][0]:
+				resolved = syms[i][1]
+				break
+		line += ' ' + resolved
+	print line
+fp.close()