Node.js and JavaScript bring with them great power and performance, but at two costs. One is the relative newness of JavaScript as a general-purpose programming language; the other is the peculiar way error reporting and debugging work in the Node.js stack.
When I took some time to talk with recently anointed project Node.js Project Lead Timothy J. Fontaine about these issues, he was able to shed light on how Joyent -- and other users of Node.js -- have dealt with them.
"Node.js uses JavaScript and is dynamic," he said, "so when you hit a problem, it's difficult to figure out what's going on. With a traditional app, you get a core file and symbols [when it crashes]. With [the Node.js JavaScript engine] V8, if the process dies, you don't have enough information to figure out where you died, since all the JavaScript information is gone. You're left trying to add more logging or trying to figure out from the existing logs where things went wrong."