Last active
August 29, 2015 14:13
-
-
Save DinisCruz/d8d79b7cf20002fbac09 to your computer and use it in GitHub Desktop.
How to access stack trace values and parameters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
console.log('--------------------------') | |
Object.defineProperty global, '__stack', { | |
get: ()-> | |
orig = Error.prepareStackTrace; | |
Error.prepareStackTrace = (_, stack)-> return stack; | |
err = new Error; | |
Error.captureStackTrace(err, arguments.callee); | |
stack = err.stack; | |
Error.prepareStackTrace = orig; | |
return stack; | |
} | |
Object.defineProperty global, '__line', { | |
get: ()-> | |
return __stack[0].getLineNumber() | |
} | |
require('fluentnode') | |
methodBBBBB = (BBBBB)-> | |
#console.log arguments.callee.arguments.callee.arguments | |
for frame in __stack | |
log frame.getFunctionName() + " - " + frame.getFileName() + " : " + frame.getLineNumber() #+ frame.fun.arguments.json_inspect() | |
log __stack.length | |
log __stack[2].fun.arguments | |
log __stack[0].getFunctionName() | |
#console.log(Object.keys(__stack[0].receiver)) | |
#console.log(__line); | |
#console.trace('a') | |
methodAAAA = (VVVVVV)-> | |
methodBBBBB('cccccc') | |
methodAAAA('BBBBBBBBBBBB') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
if module.filename.match /\.(lit)?coffee$/ # DIY source map support | |
require('source-map-support').install | |
retrieveSourceMap: require './retrieve_source_map' | |
else | |
require('source-map-support').install() # Assume source maps have already been compiled | |
# Rest of your main file here | |
require('fluentnode') | |
Object.defineProperty global, '__stack', { | |
get: ()-> | |
orig = Error.prepareStackTrace; | |
Error.prepareStackTrace = (_, stack)-> return stack; | |
err = new Error | |
Error.captureStackTrace(err, arguments.callee); | |
stack = err.stack; | |
Error.prepareStackTrace = orig; | |
return stack; | |
} | |
global.printStack = (size)=> | |
size ?= 3 | |
for frame in __stack.take(size) | |
filename = frame.getFileName() | |
lineNumber = frame.getLineNumber() # log frame.getFunctionName() + " - " + filename + " : " + lineNumber #+ frame.fun.arguments.json_inspect() | |
codeline = filename.file_Contents().split('\n') | |
log '-----: ' + lineNumber | |
log codeline[lineNumber-2] + '\n' + codeline[lineNumber-1] + '\n' + codeline[lineNumber] | |
methodBBBBB = (BBBBB)-> | |
printStack() | |
#console.log arguments.callee.arguments.callee.arguments | |
#log __stack.length | |
#log __stack[2].fun.arguments | |
#log __stack[0].getFunctionName() | |
#console.log(Object.keys(__stack[0].receiver)) | |
#console.log(__line); | |
#console.trace('a') | |
#methodAAAA = (VVVVVV)-> | |
methodBBBBB('cccccc') | |
#methodAAAA('BBBBBBBBBBBB') | |
#console.log module.filename |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# was called : retrieve_source_map.coffee | |
coffee = require 'coffee-script' | |
fs = require 'fs' | |
cachedSourceMaps = {} | |
generateSourceMap = (path) -> | |
return unless path.match /\.(lit)?coffee$/ | |
try | |
code = fs.readFileSync(path, 'utf8') | |
options = | |
filename: path | |
sourceMap: true | |
header: false | |
{js, v3SourceMap} = coffee.compile code, options | |
v3SourceMap = JSON.parse v3SourceMap | |
v3SourceMap.file = path | |
v3SourceMap.sourceRoot = "" | |
v3SourceMap.sources = [path] | |
v3SourceMap = JSON.stringify v3SourceMap | |
cachedSourceMaps[path] = {map: v3SourceMap} | |
catch e | |
cachedSourceMaps[path] = null # Prevent recursion | |
console.error "Error occurred generating sourcemap" | |
console.error e?.stack | |
return cachedSourceMaps[path] | |
module.exports = (path) -> | |
if typeof cachedSourceMaps[path] isnt 'undefined' | |
return cachedSourceMaps[path] | |
else | |
return generateSourceMap(path) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment