查看源代码 Runtime_Tools 发布说明

本文档描述了对 Runtime_Tools 应用程序所做的更改。

Runtime_Tools 2.1.1

修复的错误和故障

  • 修复了远程节点上的 dbg 会话过早终止的错误。

    自身 ID: OTP-19188 辅助 ID: PR-8692

Runtime_Tools 2.1

改进和新功能

  • instrument 模块现在可以跟踪每个进程或每个端口的分配。

    自身 ID: OTP-18577 辅助 ID: PR-7236

  • 新的函数 proc_lib:set_label/1 可用于向任何没有注册名称的进程添加描述性术语。该名称将显示在诸如 c:i/0observer 等工具中,并且将包含在使用 gen_servergen_statemgen_eventgen_fsm 的进程生成的崩溃报告中。

    可以通过调用 proc_lib:get_label/1 来检索进程的标签。

    请注意,这些函数适用于任何进程,而不仅仅是使用 proc_lib 的进程。

    示例

    1> self().
    <0.90.0>
    2> proc_lib:set_label(my_label).
    ok
    3> i().
        .
        .
        .
    <0.90.0>              erlang:apply/2                        2586    75011    0
    my_label              c:pinfo/2                               51
    4> proc_lib:get_label(self()).
    my_label

    自身 ID: OTP-18789 辅助 ID: PR-7720, PR-8003

  • 类型规范已添加到所有 dbg 函数中。

    自身 ID: OTP-18859 辅助 ID: PR-7782

  • 文档已迁移为使用 Markdown 和 ExDoc。

    自身 ID: OTP-18955 辅助 ID: PR-8026

  • dbg 已更新为使用 跟踪会话

    添加了 dbg:session_create/1dbg:session/2dbg:session_destroy/1 来处理会话。有关详细信息,请参阅文档。

    自身 ID: OTP-19081 辅助 ID: PR-8363

Runtime_Tools 2.0.1

修复的错误和故障

  • 修复了在端口已死的情况下,获取观察器的端口信息可能会导致崩溃的问题。

    自身 ID: OTP-18868 辅助 ID: GH-7735

  • 修复了 Windows 上一些良性的编译警告。

    自身 ID: OTP-18895

Runtime_Tools 2.0

修复的错误和故障

  • 修复了 instrument:carriers/0,1 的类型规范

    自身 ID: OTP-18499 辅助 ID: PR-6946

改进和新功能

  • 添加 dbg:tracer(file, Filename) 作为以纯文本形式跟踪到文件的便捷方式。

    自身 ID: OTP-18211 辅助 ID: PR-6143

  • 通过在嵌入模式的启动顺序中添加一个额外步骤来改进启动期间对 on_load 模块的处理,该步骤运行所有 on_load 处理程序,而不是依赖于稍后在内核监督树启动时显式调用它们。

    这主要是代码改进和 OTP 内部简化,以避免将来的错误并简化代码维护。

    自身 ID: OTP-18447

  • 弃用 dbg:stop_clear/0,因为它只是 dbg:stop/0 的函数别名

    自身 ID: OTP-18478 辅助 ID: GH-6903

  • instrument 模块已从 tools 移动到 runtime_tools

    自身 ID: OTP-18487 辅助 ID: PR-6829

  • 删除了实验性的 erts_alloc_config 模块。它不再生成良好的配置,并且无法以合理的向后兼容方式进行修复。自 OTP 25 以来,它已被弃用,并计划在 OTP 26 中删除。

    *潜在的不兼容性 *

    自身 ID: OTP-18549 辅助 ID: PR-7105

Runtime_Tools 1.19

修复的错误和故障

  • 在 macOS 和 Windows 上读取端口套接字选项时会“跳过”无效选项。

    自身 ID: OTP-18012 辅助 ID: #5798

改进和新功能

  • dbg:stop/0 现在表现得像 dbg:stop_clear/0,清除所有函数的全局跟踪模式。

    自身 ID: OTP-17909 辅助 ID: ERIERL-760

  • erts_alloc_config 已计划在 OTP 26 中删除。它已经很长时间没有生成好的配置,而且不幸的是,它无法以向后兼容的方式进行修复。

    自身 ID: OTP-17939

Runtime_Tools 1.18

修复的错误和故障

  • 修复了 scheduler:utilization(Seconds) 中的错误,该错误会导致 scheduler_wall_time 系统标志错误地启用。

    自身 ID: OTP-17800 辅助 ID: PR-5425

改进和新功能

  • 添加 scheduler:get_sample/0get_sample_all/0。还澄清了 scheduler 模块文档,说明其如何依赖于系统标志 scheduler_wall_time

    自身 ID: OTP-17830 辅助 ID: GH-5425, PR-5444

Runtime_Tools 1.17

改进和新功能

  • 观察器现在有一个用于新套接字的部分。

    自身 ID: OTP-17346

  • dbg 文档已扩展,以包括所有函数名称首字母缩写的含义。

    自身 ID: OTP-17572 辅助 ID: PR-5117

Runtime_Tools 1.16.2

改进和新功能

  • 已删除实验性的 HiPE 应用程序,以及其他应用程序中的所有相关功能。

    *潜在的不兼容性 *

    自身 ID: OTP-16963

Runtime_Tools 1.16.1

修复的错误和故障

  • 函数 dbg:n/1 使用本地 fun 在远程节点上设置跟踪器。只要远程节点运行完全相同版本的 Erlang/OTP,此方法就可以正常工作,否则根本无法工作。通过导出相关函数并在远程节点上调用此函数来设置远程跟踪,可以解决此问题。

    自身 ID: OTP-16930 辅助 ID: ERL-1371, GH-4396

Runtime_Tools 1.16

改进和新功能

  • 澄清模块“scheduler”的文档。

    自身 ID: OTP-17208 辅助 ID: GH-4502, PR-4532

Runtime_Tools 1.15.1

修复的错误和故障

  • 修复了尝试从正在终止的端口读取端口信息时触发的 appmon_info 中的崩溃。

    appmon_infoobserver 用来从观察到的节点获取信息。

    自身 ID: OTP-16787 辅助 ID: PR-2673

Runtime_Tools 1.15

改进和新功能

  • 改进了 instrument 模块中分配和载体的呈现。

    自身 ID: OTP-16327

  • 由于新的生成改进而进行的微小更新。

    自身 ID: OTP-16368 辅助 ID: OTP-15251

Runtime_Tools 1.14.0.1

修复的 Bug 和故障

  • 函数 dbg:n/1 使用本地 fun 在远程节点上设置跟踪器。只要远程节点运行完全相同版本的 Erlang/OTP,此方法就可以正常工作,否则根本无法工作。通过导出相关函数并在远程节点上调用此函数来设置远程跟踪,可以解决此问题。

    自身 ID: OTP-16930 辅助 ID: ERL-1371, GH-4396

Runtime_Tools 1.14

改进和新功能

  • 修复 dbg:stop_clear/0 以同时清除跟踪事件 (send'receive')。

    自有 ID: OTP-16044

Runtime_Tools 1.13.3

改进和新功能

  • 由于 crypto 应用的配置移动,对构建系统进行了必要的次要更新。

    自有 ID: OTP-15262 辅助 ID: OTP-15129

Runtime_Tools 1.13.2.1

修复的 Bug 和故障

  • 函数 dbg:n/1 使用本地 fun 在远程节点上设置跟踪器。只要远程节点运行完全相同版本的 Erlang/OTP,此方法就可以正常工作,否则根本无法工作。通过导出相关函数并在远程节点上调用此函数来设置远程跟踪,可以解决此问题。

    自身 ID: OTP-16930 辅助 ID: ERL-1371, GH-4396

Runtime_Tools 1.13.2

改进和新功能

  • 更新 systemtap 跟踪示例脚本。

    自有 ID: OTP-15670

Runtime_Tools 1.13.1

改进和新功能

  • 通过使用新的 system_info(ets_count) 而不是更昂贵的 length(ets:all()) 来优化 observer

    自有 ID: OTP-15163 辅助 ID: PR-1844

Runtime_Tools 1.13

改进和新功能

  • 新的实用程序模块 scheduler,使测量调度器利用率更容易。

    自有 ID: OTP-14904

Runtime_Tools 1.12.5

修复的 Bug 和故障

Runtime_Tools 1.12.4

改进和新功能

  • 新的 erts_alloc 策略系列:Age Order First Fit。类似于“地址顺序”,但总是选择最老的可能的载体进行分配。

    自有 ID: OTP-14917 辅助 ID: ERIERL-88

Runtime_Tools 1.12.3

修复的 Bug 和故障

  • 删除了文档中所有旧的未使用的文件。

    自有 ID: OTP-14475 辅助 ID: ERL-409, PR-1493

Runtime_Tools 1.12.2

改进和新功能

  • 通用的 Unicode 改进。

    自有 ID: OTP-14462

Runtime_Tools 1.12.1

修复的 Bug 和故障

  • 将跟踪模式保存到文件时添加了错误的编码注释。现在已更正。

    自有 ID: OTP-14479

Runtime_Tools 1.12

修复的 Bug 和故障

  • 在具有 on_load 指令(HiPE 尚不支持)的模块中添加编译选项 -compile(no_native)

    自有 ID: OTP-14316 辅助 ID: PR-1390

改进和新功能

  • 由于包含任意 Unicode 字符的原子而进行的各种更新。

    自有 ID: OTP-14285

  • 现在可以在支持的平台上将套接字绑定到设备 (SO_BINDTODEVICE)。

    例如,这已在 Linux 下实现以支持 VRF-Lite;请参阅 VRF 和 GitHub 拉取请求 #1326

    自有 ID: OTP-14357 辅助 ID: PR-1326

Runtime_Tools 1.11.1

修复的 Bug 和故障

  • etop 错误地报告了自工具首次启动以来的平均调度器利用率,而不是自上次更新以来的调度器利用率。现在已更正。

    自有 ID: OTP-14090 辅助 ID: seq13232

Runtime_Tools 1.11

改进和新功能

  • 为 ttb:tracer/2 添加选项 queue_size。 这将为 IP 跟踪驱动程序设置最大队列大小,该驱动程序在跟踪到 shell 和/或 {local,File} 时使用。

    queue_size 的默认值由 dbg 指定,现在已从 50 更改为 200。

    自有 ID: OTP-13829 辅助 ID: seq13171

  • 端口信息页面已更新,以显示每个端口的更多信息。

    自有 ID: OTP-13948 辅助 ID: ERL-272

Runtime_Tools 1.10.1

改进和新功能

  • 更正一些小的文档问题。

    自有 ID: OTP-13891

Runtime_Tools 1.10

修复的 Bug 和故障

  • 修复了 dbg:trace_port/2 中的一个错误,该错误可能导致跟踪 ip 驱动程序产生错误的错误报告“...(re)selected before stop_select was called for driver trace_ip_drv”。

    自有 ID: OTP-13576 辅助 ID: ERL-119

改进和新功能

  • 添加微状态记帐

    微状态记帐是一种跟踪 ERTS 中不同线程处于哪种状态的方法。主要使用领域是通过检查线程处于哪种状态,然后从那里找出为什么以及在哪里进行优化来找出性能瓶颈。

    由于检查是否启用微状态记帐相对昂贵,因此默认情况下仅启用少数状态,并且可以通过配置启用更多状态。

    有一个名为 msacc 的便利模块已添加到 runtime_tools 中,该模块可以帮助收集和解释来自微状态记帐的数据。

    有关更多信息,请参阅 erlang:statistics(microstateaccounting, ) 和 runtime_tools 中的 msacc 模块。

    自有 ID: OTP-12345

  • 更新观察器 GUI 以支持在端口上进行跟踪,并为发送/接收设置匹配规范。这需要在 runtime_tools/dbg 中进行一些小的错误修复。

    自有 ID: OTP-13481

  • 更新 dbg 和 ttb 以使用跟踪器模块作为跟踪器并在端口上进行跟踪。

    自有 ID: OTP-13500

  • 更新 dbg 以接受新的跟踪选项 monotonic_timestampstrict_monotonic_timestamp

    自有 ID: OTP-13502

  • 通过 Erlang 跟踪引入 LTTng 跟踪。

    要启用 LTTng,需要使用配置选项 --with-dynamic-trace=lttng 构建 OTP。

    动态跟踪模块 dyntrace 现在可以用作 Erlang 跟踪的 LTTng sink。有关所有跟踪点的列表,请参阅 Runtime Tools 用户指南

    此功能还引入了跟踪标签中的不兼容更改。跟踪标签 gc_startgc_end 已拆分为 gc_minor_startgc_minor_endgc_major_startgc_major_end

    *潜在的不兼容性 *

    自有 ID: OTP-13532

Runtime_Tools 1.9.3

改进和新功能

  • dbg:trace_client() 现在使用读取缓冲区来加速读取跟踪文件。

    自有 ID: OTP-13279

Runtime_Tools 1.9.2

改进和新功能

  • 澄清了 dbg:stop 文档

    自有 ID: OTP-13078

Runtime_Tools 1.9.1

修复的 Bug 和故障

  • trace_file_drv 没有正确处理 EINTR,这导致它在运行时系统收到信号时失败。

    自有 ID: OTP-12890 辅助 ID: seq12885

Runtime_Tools 1.9

改进和新功能

  • 将许可证文本从 Erlang 公共许可证更改为 Apache 公共许可证 v2

    自有 ID: OTP-12845

Runtime_Tools 1.8.16

修复的错误和故障

  • 当调用 dbg:stop/0 时,dbg 启动的跟踪进程并不总是终止。

    自有 ID: OTP-12517

Runtime_Tools 1.8.15

修复的错误和故障

  • nif_version 添加到 erlang:system_info/1 中,以便以类似于 driver_version 的方式获取运行时系统的 NIF API 版本。

    自有 ID: OTP-12298

Runtime_Tools 1.8.14

修复的错误和故障

  • dbg:{stop,stop_clear} 函数的返回值的文档现在是正确的 (感谢 Luca Favatella)

    自有 ID: OTP-11603

  • 修复了 Illumos 上的 DTrace 构建。(感谢 Ryan Zezeski。)

    自有 ID: OTP-11622

  • 不要关闭 scheduler_wall_time,因为它会干扰其他应用程序的使用。

    自有 ID: OTP-11693 辅助 ID: seq12528

  • 以下应用程序的应用程序升级 (appup) 文件已更正

    asn1, common_test, compiler, crypto, debugger, dialyzer, edoc, eldap, erl_docgen, et, eunit, gs, hipe, inets, observer, odbc, os_mon, otp_mibs, parsetools, percept, public_key, reltool, runtime_tools, ssh, syntax_tools, test_server, tools, typer, webtool, wx, xmerl

    一个新的用于测试 appup 文件的测试实用程序已添加到 test_server。现在,OTP 中的大多数应用程序都使用它。

    (感谢 Tobias Schlager)

    自有 ID: OTP-11744

改进和新功能

  • 允许安装路径包含 unicode 字符。

    自有 ID: OTP-10877

  • erts_alloc_config 工具已更新,以生成更适合 VM 中当前 SMP 支持的配置。

    自有 ID: OTP-11662

  • 引入了 app 文件键 runtime_dependencies

    运行时依赖项已添加到 OTP 中的所有 app 文件中。请注意,在 OTP 17 期间,这些可能不是完全正确的,但正在积极地进行改进。

    函数 system_information:sanity_check/0 将在调用时验证系统中所有声明的运行时依赖项。

    自有 ID: OTP-11773

Runtime_Tools 1.8.13

修复的错误和故障

  • 当 ERTS 内部内存分配器被禁用时,Observer 没有产生正确的结果。

    自有 ID: OTP-11520

Runtime_Tools 1.8.12

修复的错误和故障

  • 进程跟踪标志 'silent' 现在允许在调用 dbg:p/2 中使用。

    自有 ID: OTP-11222

改进和新功能

  • 引入了用于检查系统和构建配置的功能。

    自有 ID: OTP-11196

Runtime_Tools 1.8.11

修复的错误和故障

  • 修复了观察器中与 CPU/调度程序利用率计算相关的一些错误。

    当运行 hipe 时,进程的当前函数被接受为 'undefined'。

    自有 ID: OTP-10894

改进和新功能

  • 包含非 ASCII 字符的 Erlang 源文件现在以 UTF-8 编码(而不是 latin1)。

    自有 ID: OTP-11041 辅助 ID: OTP-10907

Runtime_Tools 1.8.10

修复的错误和故障

  • 修复了当 ets 表不再存在时表查看器刷新崩溃的问题 (感谢 Peti Gömori)

    自有 ID: OTP-10635

改进和新功能

  • 动态跟踪工具 dtrace 和 systemtap 的用户指南已添加到文档中。

    自有 ID: OTP-10155

  • 在必要时,已将声明编码的注释添加到 Erlang 文件中。该注释旨在在 UTF-8 成为默认编码时在 Erlang/OTP R17B 中删除。

    自有 ID: OTP-10630

  • 已更正一些超出 PDF 页面宽度的示例。

    自有 ID: OTP-10665

  • 后端模块 appmon_info.erl 从 appmon 应用程序移动到 runtime_tools。这允许从远程 erlang 节点向没有安装 appmon(及其依赖项)的目标节点运行 appmon,只要那里安装了 runtime_tools。

    自有 ID: OTP-10786

Runtime_Tools 1.8.9

修复的错误和故障

  • 更改模块级文档,以提供使用 `dyntrace:p()` 跟踪函数的完整逐步说明。(感谢 Scott Lystig Fritchie)

    自有 ID: OTP-10141

  • 向 dyntrace.erl 和 dyntrace.c 添加 1024 个单独的 USDT 探针 (感谢 Scott Lystig Fritchie)

    自有 ID: OTP-10143

  • 将 DTrace 探针的主体重新定位到静态链接的 VM。

    由于各种操作系统(在 DTrace 和 SystemTap 世界中)并不完全支持共享库中的 DTrace 探针(或 SystemTap 兼容模式探针),我们将这些探针重新定位到静态链接的虚拟机。这可以被视为(尚未)实验性功能对原始 VM 的污染。然而

    1. 此代码可以通过 C 预处理器完全消除。2. 将探针保留在 dyntrace NIF 共享库中在太多平台上根本无法正常工作。非常感谢 Basho 的 Macneil Shonle 在我受伤的手指失效时提供了帮助。(注意:Solaris 10 和 FreeBSD 9.0-RELEASE 可能需要很长时间才能编译)

    自有 ID: OTP-10189

Runtime_Tools 1.8.8

改进和新功能

  • 来自 Scott Lystig Fritchie 的 DTrace 源代码补丁已集成到源代码树中。对于生产用途,仍然不支持使用带有 dtrace 探针的模拟器,但它可能是一个有价值的调试工具。使用 --with-dynamic-trace=dtrace(或 --with-dynamic-trace=systemtap)进行配置以创建启用 dtrace 探针的构建。有关文档和示例,请参阅 runtime_tools。

    自有 ID: OTP-10017

Runtime_Tools 1.8.7

修复的错误和故障

  • 早期的 dbg:stop 只执行了 erlang:trace_delivered,并没有刷新跟踪文件驱动程序。因此,当 dbg:stop 返回时,可能仍然存在已传递到驱动程序(由 erlang:trace_delivered 保证)但尚未写入文件的跟踪消息。现在在 dbg 进程终止之前,在每个节点上添加刷新。

    自有 ID: OTP-9651

  • 由 trace_file_drv 驱动程序创建的文件句柄被继承到子进程。现在已更正。

    自有 ID: OTP-9658

改进和新功能

  • 如果您限制作业的数量,例如使用 'make -j6' 或 'make -j10',则现在可以使用并行 make 构建 Erlang/OTP。由于缺少一些依赖项,'make -j' 目前不起作用。

    自有 ID: OTP-9451

  • 添加了两个新的内置跟踪模式别名:caller_trace (c) 和 caller_exception_trace (cx)。有关详细信息,请参阅 dbg:ltp/0 文档。

    自有 ID: OTP-9458

Runtime_Tools 1.8.6

改进和新功能

  • 添加了两个新的内置跟踪模式别名:caller_trace (c) 和 caller_exception_trace (cx)。有关详细信息,请参阅 dbg:ltp/0 文档。

    自有 ID: OTP-9458

Runtime_Tools 1.8.5

改进和新功能

  • 当 inviso 设置大量跟踪模式时,Erlang VM 可能会在几秒钟内无响应。现在已更正。

    自有 ID: OTP-9048 辅助 ID: seq11480

Runtime_Tools 1.8.4.1

修复的错误和故障

  • 次要更正和删除临时解决方法。

    自有 ID: OTP-8755 辅助 ID: seq-11628, seq-11639

  • inviso_autostart_server 中的小修复。

    自有 ID: OTP-8783 辅助 ID: seq11628

Runtime_Tools 1.8.4

改进和新功能

  • 杂项更新。

    自有 ID: OTP-8705

Runtime_Tools 1.8.3

改进和新功能

  • 交叉编译改进和其他构建系统改进。

    最值得注意的

    • 大量的交叉编译改进。旧的交叉编译支持或多或少是不存在的,而且是坏的。请注意,交叉编译支持仍然应被视为实验性的。另请注意,旧的交叉编译配置如果不进行修改则无法使用。有关交叉编译 Erlang/OTP 的更多信息,请参阅 $ERL_TOP/INSTALL-CROSS.md 文件。
    • 支持使用 DESTDIR 进行分阶段安装。旧的损坏的 INSTALL_PREFIX 也已修复。有关更多信息,请参阅 $ERL_TOP/INSTALL.md 文件。
    • 顶层 Makefilerelease 目标的文档。有关更多信息,请参阅 $ERL_TOP/INSTALL.md 文件。
    • make install 现在默认创建相对符号链接,而不是绝对符号链接。有关更多信息,请参阅 $ERL_TOP/INSTALL.md 文件。
    • $ERL_TOP/configure --help=recursive 现在可以工作,并打印所有带有 configure 脚本的应用程序的帮助信息。
    • make all 之后直接执行 make installmake release 不再触发各种重建。
    • 在没有先前执行 make all 的情况下执行 make installmake release 时,现在使用现有的引导系统。
    • 当动态链接到 libssl.solibcrypto.so 时,cryptossl 应用程序使用相同的运行时库路径。运行时库搜索路径也得到了扩展。
    • erl_interfaceodbcconfigure 脚本现在以与 ERTS 相同的方式搜索线程库和线程库的特性。
    • 当在 64 位系统上构建时,odbc 应用程序的 configure 脚本现在还在 lib64lib/64 目录中查找 odbc 库。
    • erl_interface 应用程序中的 config.h.in 文件现在是自动生成的,而不是静态更新的,这减少了 configure 测试无效的风险。

    (感谢 Henrik Riomar 的建议和测试)

    (感谢 Winston Smith 提供的 AVR32-Linux 交叉配置和测试)

    *潜在的不兼容性 *

    自有 ID:OTP-8323

  • 由 tidier 建议的清理以及类型和规范的现代化。

    自有 ID:OTP-8455

Runtime_Tools 1.8.2

改进和新功能

  • 现在使用大多数平台上都存在的开源工具(xsltproc 和 fop)构建文档。一个明显的变化是删除了框架。

    自有 ID:OTP-8201

Runtime_Tools 1.8.1

修复的 Bug 和故障

  • Makefile.in 已更新为使用 LDFLAGS 环境变量(如果已设置)。(感谢 Davide Pesavento。)

    自有 ID:OTP-8157

Runtime_Tools 1.8

改进和新功能

  • 如果仿真器的自定义分配器已关闭(例如,使用 +Meamin 选项),则 etop 会崩溃。

    自有 ID:OTP-7519

  • 版权声明已更新。

    自有 ID:OTP-7851

  • 现在,dbg:p/2 接受文档中声明的 {X,Y,Z} 进程规范。它现在也接受类似于 erlang:pid_to_list/1 的 "<X.Y.Z>"。

    dbg 中现在有一个预先保存的匹配规范,可以节省大量输入。使用 dbg:ltp/0 了解更多信息...

    自有 ID:OTP-7867

Runtime_Tools 1.7.3

修复的 Bug 和故障

  • 修复了时间戳问题,其中某些事件可能会乱序发送。对数据呈现的微小修复。

    自有 ID:OTP-7544 辅助 ID:otp-7442

Runtime_Tools 1.7.2

修复的 Bug 和故障

  • etop 现在比以前更快、更可靠地收集进程信息(已消除 Igor Goryachev 报告的竞争条件)。

    当调用 ttb:stop/0 时,可能会丢失跟踪消息。

    自有 ID:OTP-7164

Runtime_Tools 1.7.1

改进和新功能

  • 文档已更新,以反映 Erlang shell 的最新更新以及 io_lib 模块的控制序列 p 的微小修改。

    已从代码示例和 Erlang shell 示例中删除了多余的空行。

    自有 ID:OTP-6944 辅助 ID:OTP-6554、OTP-6911

  • 内存管理改进,特别是对于具有 SMP 支持的运行时系统

    • 具有 SMP 支持的运行时系统现在可以使用大多数内存分配器的多个线程特定实例。这提高了性能,因为它减少了内存分配器中的锁争用。但是,对于某些应用程序,它可能会增加内存使用量。具有 SMP 支持的运行时系统默认情况下将在大多数分配器上启用此功能。可以配置使用的实例数量。
    • driver_alloc()driver_realloc()driver_free() 现在使用它们自己的 erts 特定内存分配器,而不是系统上的默认 malloc() 实现。
    • 某些分配器的默认配置已更改,以更好地适应使用大量内存的应用程序。
    • 添加了一些新的 erts_alloc 配置参数。
    • erts_alloc_config 已被修改为能够创建适合分配器的多个实例的配置。
    • 已更改 erlang:system_info({allocator, Alloc}) 的返回值。这是因为分配器现在可以在多个实例中运行。

    如果由于某种原因希望内存分配器像以前一样配置,可以将 +Mea r11b 命令行参数传递给 erl

    有关更多信息,请参阅 erts_alloc(3)m:erts_alloc_configerlang 文档。

    *潜在的不兼容性 *

    自有 ID:OTP-7100

Runtime_Tools 1.7

修复的 Bug 和故障

  • 如果跟踪器进程以退出原因 kill 被杀死,dbg 可能会使被跟踪的进程处于挂起状态。

    引入了 erlang:suspend_process/2,它接受选项列表作为第二个参数。有关更多信息,请参阅 erlang 文档。

    如果调用 erlang:suspend_process/[1,2] 的进程终止,则通过 erlang:suspend_process/[1,2] 挂起的进程现在将自动恢复。

    以前,一个进程可以挂起进程,而另一个进程可以恢复进程,除非有人在跟踪被挂起的进程。这不再可能。恢复进程的进程必须是挂起它的进程。

    *潜在的不兼容性 *

    自有 ID:OTP-6946

改进和新功能

  • 已删除未记录且不受支持的函数 dbg:tracer/1。已删除未记录、不受支持且损坏的函数 dbg:i/1

    自有 ID:OTP-6939

Runtime_Tools 1.6.8

修复的 Bug 和故障

  • 在此版本中,已修复和增强了以下内容:自动启动:现在可以配置应由自动启动机制加载的模块。这是因为并非所有应用程序系统都确定使用 OTP 启动脚本来设置所有 Erlang 模块的路径。Runtime_tools/Inviso:修复了 fetch_log 功能中的一个错误。此外,在此补丁中(再次)修复了先前补丁中(据称)修复的关于元跟踪器 write_ti 的错误。修复了 inviso_as_lib 中使远程自动启动配置文件更新失败的错误。Inviso:inviso_tool 已被赋予刷新 API。

    自有 ID:OTP-6918

Runtime_Tools 1.6.7

改进和新功能

  • 已完成以下错误修复/改进:inviso_rt 和 inviso_rt_meta 之间的内部互通。inviso_rt 用于调用 inviso_rt_meta 的调用函数现在使用监视器进行保护。inviso_rt_meta 现在在调用回调函数时包含传入的元追踪消息的时间戳。(使得可以将“更好”的时间戳添加到 ti 文件中。)invioso_tool 中的错误导致在终止时无法删除追踪模式。内部函数 h_start_session 中的错误导致如果没有活动节点来启动会话,则 inviso_tool 会崩溃。用户 inviso_tool 和 inviso API 的控制组件请求/响应 gen_server 协议具有默认超时。由于许多跟踪操作可能非常耗时,因此需要更长的超时。改进了过载保护。现在可以使过载保护自行更新(例如,在从外部过载保护器退出后)。inviso_rt_meta 现在完全使用 exception_trace match spec action term。inviso_tool 中实现了运行追踪用例 API(与激活和停用追踪用例 API 相反)。向 inviso 添加了刷新追踪端口 API。向 inviso_tool 添加了 Get_session_data API。改进了 inviso_tool:stop,使其可以命名在 inviso_tool 终止时不会删除其跟踪模式的节点。如果从 inviso_rt_meta 中的 call/return_from call-back 返回,则在处理写入多个 ti 条目时出现错误。进程追踪标志在 inviso_tool 终止时不再显式删除。没有必要。inviso_tool get_autostart_data 采用标准自动启动器。

    *与元追踪回调的不兼容性现在使用不同的参数调用。*

    自身 ID:OTP-6881

Runtime_Tools 1.6.6

已修复的错误和故障

  • inviso_rt_meta 中的一个错误导致在暂停跟踪时丢失了一个包含有关已启动 (init_tpm) 函数的信息的 ETS 表。此外,还引入了 inviso_rt 的增强功能,使其可以基于全局注册的名称激活进程跟踪标志。因此,在名称不存在的节点上激活全局名称不会报错。返回值中的进程计数将简单地设置为零(因此返回值 NodeResult 部分中只有一个节点将指示找到一个匹配的进程)。在 fetch_log API 中发现了一个错误。与此同时,fetch_log 功能也得到了增强,还提供了流量控制,使获取进程以较慢的速度发送传输的文件数据块。

    自身 ID:OTP-6703

改进和新功能

  • Makefile 的微小更改。

    自身 ID:OTP-6689 辅助 ID:OTP-6742

  • 添加了一个名为 erts_alloc_config 的实验性工具。erts_alloc_config 旨在用于帮助创建适合有限数量运行时场景的 erts_alloc 配置。有关更多信息,请参见 m:erts_alloc_config 文档。

    自身 ID:OTP-6700

Runtime_Tools 1.6.5

改进和新功能

  • 杂项改进。

    自身 ID:OTP-6576

Runtime_Tools 1.6.4

改进和新功能

  • 此应用程序已更新以消除 Dialyzer 的警告。

    自身 ID:OTP-6551

Runtime_Tools 1.6.3

已修复的错误和故障

  • 此票据包括对 runtime_tools 和 inviso 的多项改进和错误修复。现在,过载机制也可以对传入消息做出反应。如果使用了外部过载监视程序,这将很有用。对默认的自动启动机制 - inviso_autostart_server 进行了一些变量绑定的改进。现在可以并行执行自动启动“作业”,从而允许某些作业挂起,等待被跟踪系统的某些部分准备就绪后再继续。以前,当使用命名的 meta-match-specs (tpm_ms) 时,最终得到零个 match-specs 仍然保持元追踪模式活动。这导致零个 match-specs 等于对该特定函数进行无限元追踪。如果内部数据库中的元 match specs 为空,则会删除该函数的元追踪模式。inviso 运行时元追踪器进程中的标准公共循环数据现在扩展为 2 元组。添加了函数 ctp/1 和 ctpl/1,使其可以删除函数列表的跟踪模式,而不是逐个删除。除了单个二进制文件外,inviso_rt_meta 现在还将接受要输出到跟踪信息文件中的二进制文件列表。此外,还可以使用 write_ti/1 函数将自己的输出写入到跟踪信息文件中。在 inviso_rt 中发现一个错误,如果 inviso_rt 因“单独运行”(不允许在没有控制组件的情况下运行)而终止,则导致 inviso_rt_meta 保持运行而不是终止。inviso 应用程序中添加了一个新工具 inviso_tool。

    自身 ID:OTP-6426

Runtime_Tools 1.6.2

已修复的错误和故障

  • 在 runtime_tools 和 observer 应用程序中消除了几个小错误和竞争条件。

    自身 ID:OTP-6265

Runtime_Tools 1.6.1

改进和新功能

  • 有新的 BIF erlang:spawn_monitor/1,3,以及 spawn_opt/2,3,4,5 的新选项 monitor

    observer_backend 模块已更新,以处理新的 BIF。

    自身 ID:OTP-6281

Runtime_Tools 1.6

添加了 Inviso 追踪器的运行时部分,有关更多信息,请参见新的 Inviso 应用程序。这也意味着为 Runtime_Tools 添加了应用程序回调模块和应用程序 supervisor 树。

Runtime_Tools 1.5.1.1

改进和新功能

  • dbg 手册页面已更新,其中包含有关如何在跟踪时避免死锁的信息。

    自身 ID:OTP-5373 辅助 ID:seq9729

Runtime_Tools 1.5.1

已修复的错误和故障

  • 现在,当模拟器启用线程支持时,Crypto 和 Asn1 应用程序中的链接驱动程序会使用 unix 上的 -D_THREAD_SAFE-D_REENTRANT 开关进行编译。

    MacOSX 上的链接驱动程序不再使用未记录的 -lbundle1.o 开关进行编译。感谢 Sean Hinde 向我们发送了补丁。

    现在,Crypto 中的链接驱动程序和 SSL 中的端口程序可以在 OSF1 上编译。

    Runtime_Tools 中 Makefile 的微小改进。

    自身 ID:OTP-5346