Erlang 开机失败产生故障转储,如何调试?



我已经将Erlang移植到基于X86的操作系统上。尝试启动它会产生一些输出和故障转储。我需要帮助确定失败的原因。

我在启动时包含了 -init_debug,并查看了 Windows 上运行的 erlang 实例上的故障转储。在崩溃转储中,pid <0.2.0>不存在,我认为它应该存在。我欢迎提前提出任何建议。

otp_src_18.0 / bootstrap / bin: . / erl - init_debug{
progress,
preloaded
}{
progress,
kernel_load_completed
}{
progress,
modules_loaded
}{
start,
heart
}{
start,
error_logger
}{
start,
application_controller
}{
error_logger, { {
2019,
10,
7
}, {
14,
47,
26
}
},
"Error in process ~p with exit
value:~n~p~n",
[ < 0.2.0 > , {
undef,
[{
application_controller,
start,
application,
kernel,
[{
description,
"ERTS  CXC 138 10"
}, {
vsn,
"4.0"
}, {
id,
[]
}, {
modules,
[application, application_controller, application_master, application_starter, auth, code, code_server, dist_util, erl_boot_server, erl_distribution, erl_reply, error_handler, error_logger, file, file_server, file_io_server, global, global_group, global_search, group, heart, hipe_unified_loader, inet6_tcp, inet6_tcp_dist, inet6_udp, inet6_sctp, inet_config, inet_hosts, inet_gethost_native, inet_tcp_dist, kernel, kernel_config, net, net_adm, net_kernel, os, ram_file, rpc, user, user_drv, user_sup, disk_log, disk_log_1, disk_log_server, disk_log_sup, dist_ac, erl_ddll, erl_epmd, erts_debug, gen_tcp, gen_udp, gen_sctp, inet, inet_db, inet_dns, inet_parse, inet_res, inet_tcp, inet_udp, inet_sctp, pg2, seq_trace, standard_error, wrap_log_reader]
}, {
registered,
[application_controller, erl_reply, auth, boot_server, code_server, disk_log_server, disk_log_sup, erl_prim_loader, error_logger, file_server_2, fixtable_server, global_group, global_name_server, heart, init, kernel_config, kernel_sup, net_kernel, net_sup, rex, user, os_server, ddll_server, erl_epmd, inet_db, pg2]
}, {
applications,
[]
}, {
included_applications,
[]
}, {
env,
[{
error_logger,
tty
}
]
}, {
maxT,
infinity
}, {
maxP,
infinity
}, {
mod, {
kernel,
[]
}
}
]
}
],
[]
}, {
init,
start_in_kernel,
5,
[]
}, {
init,
eval_script,
8,
[]
}, {
init,
do_boot,
3,
[]
}
]
}
]
}{
"init terminating in do_boot", {
undef,
[{
application_controller,
start,
[{
application,
kernel,
[{
description,
"ERTS  CXC 138 10"
}, {
vsn,
"4.0"
}, {
id,
[]
}, {
modules,
[application, application_controller, application_master, application_starter, auth, code, code_server, dist_util, erl_boot_server, erl_distribution, erl_reply, error_handler, error_logger, file, file_server, file_io_server, global, global_group, global_search, group, heart, hipe_unified_loader, inet6_tcp, inet6_tcp_dist, inet6_udp, inet6_sctp, inet_config, inet_hosts, inet_gethost_native, inet_tcp_dist, kernel, kernel_config, net, net_adm, net_kernel, os, ram_file, rpc, user, user_drv, user_sup, disk_log, disk_log_1, disk_log_server, disk_log_sup, dist_ac, erl_ddll, erl_epmd, erts_debug, gen_tcp, gen_udp, gen_sctp, inet, inet_db, inet_dns, inet_parse, inet_res, inet_tcp, inet_udp, inet_sctp, pg2, seq_trace, standard_error, wrap_log_reader]
}, {
registered,
[application_controller, erl_reply, auth, boot_server, code_server, disk_log_server, disk_log_sup, erl_prim_loader, error_logger, file_server_2, fixtable_server, global_group, global_name_server, heart, init, kernel_config, kernel_sup, net_kernel, net_sup, rex, user, os_server, ddll_server, erl_epmd, inet_db, pg2]
}, {
applications,
[]
}, {
included_applications,
[]
}, {
env,
[{
error_logger,
tty
}
]
}, {
maxT,
infinity
}, {
maxP,
infinity
}, {
mod, {
kernel,
[]
}
}
]
}
],
[]
}, {
init,
start_in_kernel,
5,
[]
}, {
init,
eval_script,
8,
[]
}, {
init,
do_boot,
3,
[]
}
]
}
}
Crash dump is being written to: erl_crash.dump...done
init terminating in do_boot()

尝试安装erlang-tools。例如,对于 Ubuntu:

$ sudo apt-get install erlang-tools

或者,您可以从操作系统中删除 Erlang 并通过 https://www.erlang-solutions.com/resources/download.html 重新安装

我取得了进步。 我用"-g"重建以添加符号,以便我可以调试,清理所有.o,重建...它开始工作。我猜我配置错误了。

最新更新