Некоторые предложения при отладке программы 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: вроде бы идут в файл, так что проблем не должно быть.