2016-03-16 87 views
0

此問題與the previous one有關。 ,我從the official repo of the book 克隆代碼當我運行 benchmarker:start(slidingwindow5).,我得到以下錯誤:Erlang基準測試人員在閱讀文件時遇到問題

4> benchmarker:start(slidingwindow50). true Dimensions:4, Plasticity:none Dimensions:4, Plasticity:none Dimensions:4, Plasticity:none Dimensions:4, Plasticity:none Dimensions:4, Plasticity:none Dimensions:4, Plasticity:none Dimensions:4, Plasticity:none Dimensions:4, Plasticity:none Dimensions:4, Plasticity:none Dimensions:4, Plasticity:none

Specie_Id:6.858114617542796e-10 Morphology:forex_trader

******** Population monitor started with parameters:{state,benchmark,test,[], [],undefined,undefined, undefined,[],0,0,0,0,0, undefined,undefined, undefined,undefined, undefined,undefined,0.5, 10,10,mathema,inf,10000, inf,<0.274.0>,false} Initial Tot Evaluations:0

Started Started Started Started Started Started Started

5> =ERROR REPORT==== 16-Mar-2016::14:11:34 === Error in process <0.287.0> with exit value: {badarg,[{ets,last,['EURUSD15'],[]},{fx,init_state,5,[{file,"fx.erl"},{line,375}]},{fx,sim,3,[{file,"fx.erl"},{line,284}]}]}

=ERROR REPORT==== 16-Mar-2016::14:11:34 === Error in process <0.288.0> with exit value: {badarg,[{ets,last,['EURUSD15'],[]},{fx,init_state,5,[{file,"fx.erl"},{line,375}]},{fx,sim,3,[{file,"fx.erl"},{line,284}]}]}Started Started Started

據瞭解,該benchmarker無法找到並使用一個表。爲什麼會發生這種情況,我該如何解決這個問題?

更新:重命名EURUSD15導致運行時polis:start().錯誤:

Mnesia([email protected]): Data may be missing.

badarg錯誤STIL發生和報道。

更新:挖掘到的源代碼,特別是進入fx.erl,已經使我相信,由於某種原因.txt文件名爲EURUSD15不能正常從磁盤中讀取,因此它不會轉換成表格,並且可以」不能被ets和其他代碼使用。

fx.erl中的文件讀取有什麼問題,以及如何糾正?

回答

1

ets:last期望表名作爲唯一的參數。然而,在你的代碼中,它被稱爲'EURUSD15'。這是表名嗎?表格是否已創建?請記住,創建表時創建該表的進程擁有它。如果該進程死亡,則該表被刪除。您需要根據您的錯誤調用堆棧來調試代碼:

function fx:init_state/5 in file "fx.erl" line 375 
called from 
function fx:sim/3 in file "fx.erl" line 284 
+0

是的,我知道問題出在表上。有一個名爲'fx_tables'的文件夾,它包含EURUSD,EURUSD.csv,EURUSD.txt和其他文件。 據我所知,該表在過程開始之前存在,並且在它死亡時不會被刪除。 – Chiffa

+0

看看編輯,找出整個項目的文件夾結構。 – Chiffa

+0

該表是表示表名或表ID的原子,請參閱:http://erlang.org/doc/man/ets.html#type-tab該表必須已使用'ets:new/2創建'在它可以用'ets:last'訪問之前,請參閱:http://erlang.org/doc/man/ets.html#new-2表不在文件中,它在內存中,所以我我不知道你的意思是一個名爲'fx_tables'的文件夾。在Erlang shell中運行'ets:i()。',它將打印出在ETS中創建的所有表。您的餐桌'EURUSD15'必須在該列表中。 – Amiramix