2013-10-13 59 views
0

我想調試我的erlang項目,並且在我的工作中遇到了一些問題。調試Erlang程序時的一些建議(在Erlide上)

我的項目的目標是在互聯網上玩紙牌遊戲。現在,我只是在同一臺計算機上運行所有的線程(4個客戶端和服務器),而且我無法深入瞭解我的程序的正確性。首先,如果我把不同的斷點,然後我一步一步來看看發生了什麼,我的代碼似乎工作,但如果我刪除所有斷點一些線程退出,原因「終止」或「殺害」。也許原因與邏輯的線程,因此:

  • 當因線程退出「終止」,當它退出的「封殺」?

一個非常奇怪的是,當我刪除所有斷點,線程的執行過程中退出:我想在這裏發佈關於線程結束的2所描述

io:format() 

,因爲它不解釋很多出口的理由是:

<0.215.0> 
[exit, {terminated,[{io,format,[#Pid<[email protected]>,"Super election...~n, 
[]],[]},{client,loop,5,[{file,"client.erl"},{line,74}]}]}] 
comunication_core_manager:init(#Port<[email protected]>, #Pid<[email protected]>) 

<0.221.0> 
[exit, {terminated,[{io,format,[#Pid<[email protected]>,"Super election...~n",[]],[]}, 
{client,loop,5,[{file,"client.erl"},{line,74}]}]}] 
comunication_scheduler_manager:loop(#Port<[email protected]>, #Pid<[email protected]>, 
{state,{[],[]},{dict,0,16,16,8,80,48,{[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, 
{{[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}}},[],[],1,20}) 

現在我的問題是:

  • 我如何獲得有關這些描述的有用信息?
  • 爲什麼我會遇到io的問題:format()?也許有一些僵局?

當然,在您看來,所有其他的建議表示讚賞,因爲我不是調試親..

編輯:所有線程都開始spawn_link。

回答

0

關於與erlide的關係:

首先,你嘗試用標準OTP調試Erlide和調試外面跑?如果你的代碼有問題,這將顯示它是否與erlide有關。

確切的行爲取決於您的代碼:過程如何鏈接其監督層次結構(如果有)。很難說這裏發生了什麼。在erlide中運行唯一不尋常的是控制檯是遠程shell,所以並不是所有的輸出都能達到它。你的io:格式似乎是去了一個文件,所以這應該不成問題。