2011-02-11 41 views
3

當我的項目被凍結時,我有這種情況。 我看到只有100%的CPU使用率(其餘爲0%,但我使用的是SMP)。erlang使用100%的CPU之一

我的管理控制檯說:

=ERROR REPORT==== 11-Feb-2011::00:45:00 === 
** Node '[email protected]' not responding ** 
** Removing (timedout) connection ** 

後,我無法連接到該節點。

如果我使用C++進行編程,我可以進行調試構建,當這種情況發生時,我可以附加到我的進程並查看代碼在何處循環。

但我怎麼能在Erlang做到這一點?我怎樣才能獲得調用堆棧或什麼來幫助我理解真正的錯誤?

謝謝你的幫助。

回答

6

你可以在命令行調試信息編譯模塊:

$ erlc +debug_info module.erl 

或者在二郎殼:

1> c(module, debug_info). 
ok 

當你已經開始你的過程中,你有一個選項,連接到工作過程。在你的erlang外殼中啓動調試器:

2> debugger:start(). 

將顯示調試器窗口。從菜單中選擇模塊 - >解釋,然後在「解釋對話框」窗口中選擇要附加到的模塊。當你這樣做時,你會看到你的模塊在調試器的右側窗口。

現在選擇進程 - >附加,出現Attach Process窗口。

+0

不知道它是否適合你,但它觸發的第一個電話到我的模塊安裝過程窗口並允許我逐步跟蹤代碼。 – 2011-02-11 13:49:11