Некоторые предложения при отладке программы Erlang (на Erlide)

Я хочу отладить свой проект 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})

Теперь мои вопросы:

  • Как я могу получить полезную информацию об этих описаниях?
  • Почему у меня проблемы с io:format()? Может быть, какие-то тупики?

Конечно, любые другие предложения, по вашему мнению, приветствуются, потому что я не профессионал в отладке.

РЕДАКТИРОВАТЬ: все темы запускаются с spawn_link.

1 ответ

Что касается отношения с Erlide:

Прежде всего, вы пытались запустить за пределами Erlide и отладки со стандартным OTP-отладчиком? Если в вашем коде есть какая-то проблема, это покажет, связано ли это с erlide или нет.

Точное поведение зависит от вашего кода: как процессы связаны между собой своей иерархией контроля (если есть). Трудно точно сказать, что здесь происходит. Единственное, что необычно в работе в erlide, это то, что консоль является удаленной оболочкой, поэтому не все выходные данные попадают в нее. Ваши форматы io: вроде бы идут в файл, так что проблем не должно быть.

Другие вопросы по тегам