+++ /dev/null
-#!/usr/bin/env coffee
-# Usage:
-# Copy the crash log into pasteboard and then run
-# pbpaste | ./script/translate-crash-log-addresses.coffee
-
-atos = (addresses, callback) ->
- path = require 'path'
- exec = require('child_process').exec
-
- exec 'atos -o vendor/brightray/vendor/download/libchromiumcontent/Release/libchromiumcontent.dylib -arch i386 '.concat(addresses...), (error, stdout, stderr) ->
- throw error if error?
- callback stdout.split('\n')
-
-parse_stack_trace = (raw) ->
- lines = {}
- addresses = []
- for line in raw
- columns = line.split /\ +/
- if columns[1] == 'libchromiumcontent.dylib' and /0x[a-f0-9]+/.test columns[3]
- lines[columns[0]] = addresses.length
- addresses.push '0x' + parseInt(columns[5]).toString(16) + ' '
-
- atos addresses, (parsed) ->
- for line in raw
- columns = line.split /\ +/
- frame = columns[0]
- if lines[frame]?
- console.log frame, parsed[lines[frame]]
- else
- console.log line
-
-parse_log_file = (content) ->
- state = 'start'
- stack_trace = []
- lines = content.split /\r?\n/
-
- for line in lines
- if state == 'start'
- if /Thread \d+ Crashed::/.test line
- console.log line
- state = 'parse'
- else if state == 'parse'
- break if line == ''
- stack_trace.push line
-
- parse_stack_trace stack_trace
-
-input = ''
-process.stdin.resume()
-process.stdin.setEncoding 'utf8'
-process.stdin.on 'data', (chunk) ->
- input += chunk
-process.stdin.on 'end', ->
- parse_log_file input