AnyMath 文档

报告和分析崩溃(segfaults)

所以你成功地打破了朱莉娅。 祝贺你! 这里收集的是一些一般的程序,你可以接受遇到的常见症状,当出现问题。 在跟踪分段故障或试图找出脚本运行速度比预期慢的原因时,包括这些调试步骤中的信息可以极大地帮助维护者。

如果已将您定向到此页面,请查找与您所遇到的症状最匹配的症状,并按照说明生成所请求的调试信息。 症状表:

版本/环境信息

无论错误如何,我们都需要知道您正在运行的Julia版本。 当Julia第一次启动时,会打印出一个带有版本号和日期的标题。 请同时包括 版本信息() (从 xref:stdlib/InteractiveUtils.adoc#InteractiveUtils.versioninfo[交互式活动[标准库)在您创建的任何报表中:

引导过程中的Segfaults(sysimg的。jl)

向着 使 构建Julia的过程是出现问题的常见症状,而Julia正在准备代码库。 基地/ 文件夹。 许多因素可能会导致这个过程意外死亡,但是它往往不是由于Julia的C代码部分中的错误,因此通常必须在 gdb,gdb. 明确地说:

创建Julia的调试版本:

$cd<julia_root>
⑤进行调试

请注意,此过程可能会失败,并出现与正常情况相同的错误 使 咒语,但是这将创建一个调试可执行文件,将提供 gdb,gdb 获得精确回溯所需的调试符号。 接下来,在 gdb,gdb:

$cd底座/
$gdb-x。./contrib/debug_bootstrap。gdb,gdb

这将开始 gdb,gdb,尝试使用Julia的调试构建运行引导过程,并打印出一个backtrace,如果(当)它分段。 你可能需要打 <进入> 几次以获得完整的后防线。 创建一个https://gist.github.com[要旨]与后退, 版本信息,以及你能想到的任何其他相关信息,并打开一个新的https://github.com/JuliaLang/julia/issues?q=is%3Aopen Github上有一个链接到要点的[问题]。

运行脚本时的Segfaults

该过程非常类似于 Bootstrap期间的Segfaults(sysimg的。jl). 创建Julia的调试版本,并在已调试的Julia进程中运行脚本:

$cd<julia_root>
⑤进行调试
$gdb--args usr/bin/julia-debug<path_to_your_script>

请注意 gdb,gdb 会坐在那里,等待指示。 类型 r 运行该过程,以及 英国电信 在分段后生成回溯:

(gdb) r
Starting program: /home/sabae/src/julia/usr/bin/julia-debug ./test.jl
...
(gdb) bt

创建一个https://gist.github.com[要旨]与后退, 版本信息,以及你能想到的任何其他相关信息,并打开一个新的https://github.com/JuliaLang/julia/issues?q=is%3Aopen Github上有一个链接到要点的[问题]。

Julia启动过程中的错误

在Julia的启动过程中偶尔会出现错误(特别是在使用二进制发行版时,而不是从源代码编译时),如下所示:

$ julia
exec: error -5

这些错误通常表明某些东西在启动阶段的早期就没有正确加载,我们在确定出了什么问题时最好的办法是使用外部工具来审计 朱莉娅 过程:

*在Linux上,使用 斯特拉斯:

$strace朱莉娅

*在OSX上,使用 德特鲁斯:

$dtruss-f朱莉娅

创建一个https://gist.github.com[要点]与 斯特拉斯/ 德特鲁斯 输出,该 版本信息,以及任何其他相关信息并打开一个新的https://github.com/JuliaLang/julia/issues?q=is%3Aopen Github上有一个链接到要点的[问题]。

其他通用分段或无法达到的

如其他地方所述, 朱莉娅 具有良好的集成性 存款准备金率 用于生成跟踪;这包括在Linux上自动运行的能力 朱莉娅存款准备金率 并分享崩溃后的痕迹。 这在调试此类崩溃时非常有用,并且在向JuliaLang/julia回购报告崩溃问题时强烈鼓励。 要运行 朱莉娅存款准备金率 自动地,做:

julia --bug-report=rr

生成 存款准备金率 跟踪本地,但不共享,你可以这样做:

julia --bug-report=rr-local

请注意,这仅适用于Linux。 博客文章https://julialang.org/blog/2020/05/rr/[时间旅行错误报告]有更多的细节。

词汇表

本指南中使用了一些术语作为速记:

* <julia_root> 指Julia源代码树的根目录;例如,它应该包含如下文件夹 基地, 副警长, src公司, 测试 等。…​.