我想调试我的erlang项目,我的工作中遇到了一些问题。
我的项目的目标是在互联网上玩纸牌游戏。现在,我只是在同一台机器上运行所有线程(4个客户端和服务器),我无法深入了解我的程序的正确性。
首先,如果我放置不同的断点然后我一步一步看看发生了什么,我的代码似乎工作,但如果我删除所有断点一些线程退出,原因“终止”或“杀死”。也许原因与逻辑的线程有关,所以:
一个非常奇怪的事情是,当我删除所有断点时,线程在执行时退出:
io:format()
我想在这里发布关于线程结束的2个描述,因为它没有解释很多退出的原因:
<0.215.0>
[exit, {terminated,[{io,format,[#Pid<Scopone@acero.120.0>,"Super election...~n,
[]],[]},{client,loop,5,[{file,"client.erl"},{line,74}]}]}]
comunication_core_manager:init(#Port<Scopone@acero.1303>, #Pid<Scopone@acero.213.0>)
<0.221.0>
[exit, {terminated,[{io,format,[#Pid<Scopone@acero.120.0>,"Super election...~n",[]],[]},
{client,loop,5,[{file,"client.erl"},{line,74}]}]}]
comunication_scheduler_manager:loop(#Port<Scopone@acero.1303>, #Pid<Scopone@acero.215.0>,
{state,{[],[]},{dict,0,16,16,8,80,48,{[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]},
{{[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}}},[],[],1,20})
现在我的问题是:
当然,您认为其他任何建议都值得赞赏,因为我不是专业的调试人员。
编辑:所有线程都以spawn_link启动。
答案 0 :(得分:0)
关于与erlide的关系:
首先,您是否尝试在Erlide外部运行并使用标准OTP调试器进行调试?如果您的代码中存在某些问题,则会显示它是否与erlide相关。
确切的行为取决于您的代码:进程如何链接其监督层次结构(如果有)。很难准确地说出这里发生了什么。在erlide中运行唯一不寻常的是控制台是一个远程shell,因此并非所有输出都可以访问它。你的io:格式似乎转到了一个文件,所以这应该不是问题。