関数がどうやって呼ばれれているのか調べる

関数がどこから呼ばれているのか知りたいときによく使うコード
関数のどこかに埋めて置くだけ

try{(0)()}catch(e){alert(e.stack)}

結果はこんな感じ

("baa",1)@chrome://liberator/content/options.js:136
("baa",(void 0))@chrome://liberator/content/options.js:105
("=","baa",(void 0),false)@chrome://liberator/content/options.js:286
setAction([object Array])@chrome://liberator/content/options.js:515
([object Array],false,-1,[object Object])@chrome://liberator/content/options.js:749
exec([object Array])@chrome://liberator/content/commands.js:171
("test=baa",false,-1,[object Object])@chrome://liberator/content/commands.js:185
("set test=baa")@chrome://liberator/content/liberator.js:893
("set test=baa")@chrome://liberator/content/ui.js:523
("submit",512,"set test=baa")@chrome://liberator/content/liberator.js:638
onEvent([object KeyboardEvent])@chrome://liberator/content/ui.js:1300
([object KeyboardEvent])@chrome://liberator/content/events.js:1596
()@chrome://liberator/content/liberator.js -> vimp-plugin/trunk/asdfghjkl.js:53
((function () next.apply(self, args)),[object Object])@chrome://liberator/content/liberator.js -> vimp-plugin/trunk/asdfghjkl.js:83
([object KeyboardEvent])@chrome://liberator/content/liberator.js -> vimp-plugin/trunk/asdfghjkl.js:54
([object KeyboardEvent])@chrome://liberator/content/events.js:615

もっと簡単なの

ブクマコメントにこんなんがあった。
こっちのほうが短くて良い。

alert(Error('comment').stack)

id:murky-satyr JavaScript, Firefox alert(Error('comment').stack) 2009/01/28

そういえば、(0)() でエラーを出していたのは何でだったんだろう。まぁいいか。

補足

自分は Firefox しか使わないので他のブラウザや処理系で動くかは知らない。
しかし、Vimperator の動かないブラウザはブラウザとは認められないので、全てのブラウザで動くと言っても良いだろう。