Skip to content

Instantly share code, notes, and snippets.

@loderunner
Last active August 29, 2015 14:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save loderunner/7b4535f989ca5f2b901f to your computer and use it in GitHub Desktop.
Save loderunner/7b4535f989ca5f2b901f to your computer and use it in GitHub Desktop.
#!/usr/bin/python
# usage: sudo dtruss -a command 2>&1 > /dev/null | ./dtruss2csv.py > dtruss.log.csv
import re
import sys
if (len(sys.argv) > 1):
s = file(sys.argv[1], 'r').read()
else:
s = sys.stdin.read()
s = s.split('\n')
hdr = ''
r = '\s*?'
for h in s[0].split():
if (h == 'PID/THRD'):
hdr = hdr + 'PID;THRD;'
r = r + '(?P<pid>\S*?)/(?P<thread>\S*?):'
elif (h == 'SYSCALL(args)'):
hdr = hdr + h + ';'
r = r + '(?P<syscall>\S*?\(.*\))'
elif (h == '='):
r = r + '='
elif (h == 'return'):
hdr = hdr + h
r = r + '(?P<return>\S+.*)'
break
else:
hdr = hdr + h + ';'
r = r + '(?P<' + h.lower() + '>\S*)'
r = r + '\s*?'
s = [re.match(r, x) for x in s]
s = [x.groups() for x in s if x != None]
s = [';'.join(x) for x in s]
s = hdr + '\n' + '\n'.join(s)
print s
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment