2013-03-18 103 views
1

如何在api(用nodejs寫入)中存在錯誤時顯示堆棧跟蹤信息?我用curl來發布帖子btw。堆棧跟蹤nodejs REST API錯誤

我試圖節點的CLI參數,--stack跡極限,但沒有顯示出來,除了不友好的一個襯墊錯誤消息。我可以在代碼中使用console。*和調試器行,但這太費時。我試過節點檢查員。雖然它有一個很好的圖形用戶界面,它崩潰了。我認爲必須有一個更簡單的方法?

Thx。 J

回答

2

沒有看到一些代碼就很難專門回答。然而,你也可以使用

var stack = new Error().stack 

有用的模塊

  1. Memwatch有用的代碼中的outputing在各種各樣的地方堆的diff獲得堆棧跟蹤
  2. node heapdump允許您將kill -SIGUSR2 [pid]發送到正在運行的節點過程中產生,然後可以在Chrome開發者工具在左窗格中打開了配置文件選項卡,然後右擊並選擇負荷曲線
  3. 查看堆轉儲
  4. Standard v8 debugger運行過程與node debug module_name.js然後任何地方,你有你的代碼debugger;語句將導致調試器打破有
  5. node-webkit-agent使用Chrome開發人員工具的界面來分析你的Node.js應用程式堆和CPU性能分析工具。調試目前不支持,但顯然是在路上
  6. Long Stacktraces有時你可以沒有任何與之關聯的堆棧錯誤。我有時會遇到有關http請求的問題。 Longjohn修復此問題
  7. node-ofe自動生成堆轉儲當你的應用程序崩潰的致命

代碼結構

的你寫asyncronous Node.js的代碼可以在便於調試有很大的影響的方式。命名函數是好的,匿名高度嵌套的函數是不好的。退房http://callbackhell.com/關於如何編寫乾淨的可調試node.js的代碼

+0

感謝諾亞很好的指導。我認爲有一些標誌可以在nodejs中打開,只要有未處理的錯誤就可以打印堆棧跟蹤。我是nodejs的新手,但我已經發現調試非常困難。也許是異步性質...你用什麼工具來調試nodejs? – 1001b 2013-03-20 10:42:14

+0

感謝您的提示。我確信nodejs新手會覺得它很有用。 – 1001b 2013-03-20 20:52:17