2012-01-15 32 views
0

可以确定v8中回调的源信息(文件,行号,列号)吗?如何确定v8中回调的源信息

function foo(callback) { 
    var x = callback(); 
    if (typeof x !== "string") { 
     //hmmm, x is not as expected, I want to know more about the callback. 
    } 
} 
+0

v8在Node.js中? – katspaugh 2012-01-15 18:24:36

+0

是的............ – coen 2012-01-15 18:38:30

+0

然后添加Node.js标签可能吸引知识丰富的读者。 – katspaugh 2012-01-15 18:43:00

回答

0

我不知道,你可以在JavaScript中做到这一点,但如果你能调试它,它应该表现出你的文件/线等。

我猜这样做将取决于准确的你的设置,我从来没有做过 - 它看起来像节点(使用V8)有某种support for that

可能是有用的?:v8 DebuggerProtocol

+0

我可能确实以下列方式使用它:如果x不符合预期,请首先调试程序语句,然后再次调用相同的回调函数。 – coen 2012-01-15 18:27:47

+0

显然,在IDE中也有一些支持,例如Cloud9(基于Web)。没有试过它是诚实的,但可能值得一试。 http://stackoverflow.com/questions/5652972/ide-and-debugger-for-node-js – Adam 2012-01-15 19:19:34

1

callsite也有助于此。

它暴露__stack可用于获取堆栈跟踪的全局变量。而__line这是当前行号。

+0

我不明白。你能举一个例子吗? – coen 2012-01-15 21:17:26

+0

其实我不确定它是否可以做你想做的。你想要什么?要知道什么文件的回调被定义和什么行号? – fent 2012-01-15 22:12:03

+0

是的,这就是我想要的。如果有必要破解'函数'的构造函数以将源信息添加到所有函数,那就没问题,但我不知道如何。 – coen 2012-01-15 22:16:30