查看源代码 调试器发行说明

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

调试器 5.5

修复的错误和故障

  • 在 shell 中使用 fun Name/Arity 语法定义 fun 会失败。此问题已得到纠正,现在以下语法可以正常工作

    1> F = fun is_atom/1.
    #Fun.erl.42.18682967>
    > F(a).
    true
    3> Id = fun id/1.
    #Fun.erl.42.18682967>
    4> Id(42).
    ** exception error: undefined shell command id/1
    5> id(I) -> I.
    ok
    6> Id(42).
    42

    调试器也已得到纠正,可以正确处理 BIF 的此语法。

    自身 ID:OTP-19322 辅助 ID:GH-8963PR-8987

改进和新功能

  • Erlang/OTP 类型规范已更新,以消除重叠的域。

    自身 ID:OTP-19310 辅助 ID:GH-8810GH-8821PR-8986

调试器 5.4

修复的错误和故障

  • 此应用程序的依赖项现在列在 app 文件中。

    自身 ID:OTP-18831 辅助 ID:PR-7441

改进和新功能

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

    自身 ID:OTP-18819 辅助 ID:PR-7781

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

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

  • 调试器现在使用跟踪会话进行其内部跟踪使用,以避免干扰用户对跟踪的使用。

    自身 ID:OTP-19074 辅助 ID:PR-8389

调试器 5.3.4

修复的错误和故障

  • 带有嵌套记录表达式的保护可能错误地评估为 false。

    自身 ID:OTP-18958 辅助 ID:GH-8120,PR-8275

调试器 5.3.3

修复的错误和故障

  • 映射推导现在可以在调试器中工作。

    自身 ID:OTP-18888 辅助 ID:GH-7914

调试器 5.3.2

修复的错误和故障

  • 调用 int:no_break(Module) 不会删除任何断点。

    自身 ID:OTP-18644 辅助 ID:GH-7336

  • 调试器现在支持 maybe 表达式。

    自身 ID:OTP-18740 辅助 ID:GH-7410,PR-7599

调试器 5.3.1.3

修复的错误和故障

  • 带有嵌套记录表达式的保护可能错误地评估为 false。

    自身 ID:OTP-18958 辅助 ID:GH-8120,PR-8275

调试器 5.3.1.2

修复的错误和故障

  • 调试器现在支持 maybe 表达式。

    自身 ID:OTP-18740 辅助 ID:GH-7410,PR-7599

调试器 5.3.1.1

修复的错误和故障

  • 调用 int:no_break(Module) 不会删除任何断点。

    自身 ID:OTP-18644 辅助 ID:GH-7336

调试器 5.3.1

修复的错误和故障

  • 修复了会导致分析崩溃的错误。

    自身 ID:OTP-18372 辅助 ID:GH-6580

调试器 5.3

改进和新功能

调试器 5.2.1.1

修复的错误和故障

  • 调用 int:no_break(Module) 不会删除任何断点。

    自身 ID:OTP-18644 辅助 ID:GH-7336

调试器 5.2.1

修复的错误和故障

  • 修复记录索引匹配,它已损坏,永远无法匹配。

    自身 ID:OTP-17865 辅助 ID:GH-5571

调试器 5.2

改进和新功能

  • 改进记录处理,使用记录语法打印已知记录。

    自身 ID:OTP-17574

调试器 5.1

改进和新功能

  • 已实施 EEP 54 中提议的失败 BIF 调用的扩展错误信息。

    当 Erlang shell 的 BIF 调用失败时,将打印有关哪个或哪些参数出错的更多信息。当 BIF 调用失败时,proc_libcommon_testqlc 将使用相同的扩展错误信息。

    对于希望提供相同扩展错误信息的应用程序,有新的函数 erl_error:format_exception/3erl_error:format_exception/4

    有一个新的 error/3 BIF,允许应用程序或库以相同的方式为其自己的异常提供扩展错误信息。

    自身 ID:OTP-16686

调试器 5.0

改进和新功能

  • 已实施 EEP-52。

    在二进制匹配中,现在允许要匹配的段的大小为保护表达式,类似地,在映射匹配中,键现在可以是保护表达式。有关更多详细信息,请参阅 Erlang 参考手册和编程示例。

    生成 Core Erlang 代码的语言编译器或代码生成器可能需要更新才能与 OTP 23 中的编译器兼容。有关更多详细信息,请参阅 EEP 52 中的向后兼容性部分。

    自身 ID:OTP-14708

  • 已弃用的 erlang:get_stacktrace/0 BIF 现在返回一个空列表而不是堆栈跟踪。要检索堆栈跟踪,请使用 OTP 21 中引入的扩展 try/catch 语法。erlang:get_stacktrace/0 计划在 OTP 24 中删除。

    *潜在的不兼容性*

    自身 ID:OTP-16484

调试器 4.2.8

修复的错误和故障

  • 修复了 Unicode 原子在整数列表是否打印为字符串时打印不同的错误。

    自身 ID:OTP-16186

调试器 4.2.7

修复的错误和故障

  • 所有不正确的(即所有)“can not”的使用已在源代码注释、文档、示例等中更正为“cannot”。

    自身 ID:OTP-14282 辅助 ID:PR-1891

调试器 4.2.6

修复的错误和故障

  • 改进的文档。

    自身 ID:OTP-15190

调试器 4.2.5

修复的错误和故障

  • 修复了在二进制文件中调用 fun 会导致调试器崩溃的错误。

    自身 ID:OTP-14957 辅助 ID:PR-1741

调试器 4.2.4

修复的错误和故障

  • 不要在调试器窗口中引用变量和按钮名称。该错误是在 Erlang/OTP 20.1 中引入的。

    自身 ID:OTP-14802

调试器 4.2.3

改进和新功能

  • 工具已更新,可以正确显示 Unicode 原子。

    自身 ID:OTP-14464

调试器 4.2.2

修复的错误和故障

  • 只要可以在运行的系统中创建,Erlang shell、qlc:string_to_handle() 和调试器(绑定区域的求值器区域和编辑变量窗口)就可以解析 pid、端口、引用和外部 fun。

    自身 ID:OTP-14296

  • 修复了调试器的附加进程窗口的绑定区域中简单二进制值的编辑。

    自身 ID:OTP-14318

改进和新功能

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

    自身 ID:OTP-14285

调试器 4.2.1

修复的错误和故障

  • 更新构建脚本,使其不对 env、cp 和 perl 的位置进行假设。

    自身 ID:OTP-13800

  • 已修复一个导致非解释代码使调试器崩溃的错误。

    自身 ID:OTP-13756

调试器 4.2

改进和新功能

  • 当调试器搜索源文件时,它还会使用 BEAM 文件编译信息部分中源文件的位置。

    自身 ID:OTP-13375

调试器 4.1.2

改进和新功能

  • 文档更正。

    自身 ID:OTP-12994

调试器 4.1.1

已修复的错误和故障

  • 修复启动快速调试会话时发生的崩溃。感谢 Alan Duffield。

    自身 ID:OTP-12911 辅助 ID:seq12906

调试器 4.1

改进和新功能

  • 支持变量作为表达式和模式中的 Map 键

    Erlang 将接受任何表达式作为 Map 表达式中的键,并且它将接受字面量或绑定变量作为 Map 模式中的键。

    自身 ID:OTP-12218

调试器 4.0.3

已修复的错误和故障

  • 修复了在 Mac 上无法工作的保存状态功能。

    自身 ID:OTP-12378

调试器 4.0.2

已修复的错误和故障

  • 确保在需要时安装 .hrl 文件

    自身 ID:OTP-12197

  • 当调用旧的且已删除的基于 gs 的 gui 函数时,调用调试器函数 ia/1iaa/1 会崩溃。

    自身 ID:OTP-12357

调试器 4.0.1

已修复的错误和故障

  • 修复调试器和 erl_eval 中 map 更新的评估问题

    报告者:José Valim

    自身 ID:OTP-11922

调试器 4.0

已修复的错误和故障

  • 调试器现在可以正确评估代码,例如 'X = true andalso X'。(感谢 Anthony Ramine。)

    自身 ID:OTP-11553

  • 已更正调试器中代码评估的一些细微错误。(感谢 Anthony Ramine。)

    自身 ID:OTP-11676

  • 以下应用程序的应用程序升级 (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

改进和新功能

  • 已删除基于 gs 的应用程序和基于 gs 的后端。 observer 应用程序取代了已删除的应用程序。

    *潜在的不兼容性*

    自身 ID:OTP-10915

  • 在调试器中支持 Maps 语法 (感谢 Anthony Ramine)。

    自身 ID:OTP-11673

调试器 3.2.12

改进和新功能

  • 修复了浮点中间字节序机器的匹配问题。感谢 Johannes Weissl。

    自身 ID:OTP-11201

调试器 3.2.11

改进和新功能

  • 添加了一个新的复选框。选中时,由 erl 标志 +pc 设置的范围用于确定何时将整数列表打印为字符串。取消选中时,整数列表永远不会打印为字符串。

    一个小的兼容性问题:Erlang R16B01 或更高版本保存的设置无法被 Erlang R16B 或更早版本读取。

    自身 ID:OTP-10899

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

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

调试器 3.2.10

改进和新功能

  • erl 的 +pc 标志可用于设置被视为可打印的字符范围。这会影响 shell 和 io:format("~tp",...) 功能如何执行启发式字符串检测。有关更多信息,请阅读 STDLIB 用户指南。

    自身 ID:OTP-10884

调试器 3.2.9

已修复的错误和故障

  • 修复了由于 wxFileDialog 中行为更改导致的调试器设置对话框问题 (感谢 Håkan Mattsson)

    自身 ID:OTP-10621

改进和新功能

  • 已实现对 Unicode 的支持。

    自身 ID:OTP-10302

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

    自身 ID:OTP-10630

  • 现在,变量中的整数列表和 utf-8 二进制文件将显示为字符串。

    自身 ID:OTP-10679

调试器 3.2.8

已修复的错误和故障

  • 修复了断点消失的错误,由 Ricardo Catalinas Jiménez 报告。

    自身 ID:OTP-9950

调试器 3.2.7

已修复的错误和故障

  • 修复调试器消息和变量中“OK”的拼写

    调试器中的简单代码重构:将代码、变量名和字符串中所有出现的“Ok”重命名为“OK”。这提高了代码的一致性,并遵循始终使用“OK”的 GTK UI。(感谢 Ricardo Catalinas Jiménez)

    自身 ID:OTP-9699

改进和新功能

  • 现在,允许在 EEP-23 中 Richard O'Keefe 建议的 'fun M:F/A' 中使用变量。

    抽象格式中 'fun M:F/A' 的表示方式已进行了不兼容的更改。直接读取或操作抽象格式的工具(例如,解析转换)可能需要更新。编译器可以处理新旧两种格式(即,从 pre-R15 BEAM 文件中提取抽象格式并使用 compile:forms/1,2 进行编译将起作用)。syntax_tools 应用程序也可以处理两种格式。

    *潜在的不兼容性*

    自身 ID:OTP-9643

调试器 3.2.6

改进和新功能

  • 修复了 dialyzer 报告的问题。

    自身 ID:OTP-9107

调试器 3.2.5

改进和新功能

  • 杂项更新

    自身 ID:OTP-8976

调试器 3.2.4

改进和新功能

  • 已添加/清理了类型规范。(感谢 Kostis Sagonas。)

    自身 ID:OTP-8757

调试器 3.2.3

改进和新功能

  • 删除了由于新的自动导入 BIF 导致的警告

    自身 ID:OTP-8674 辅助 ID:OTP-8579

  • 已删除预定义的内置类型 tid()。而是应使用 ets:tid()。

    *潜在的不兼容性*

    自身 ID:OTP-8687

调试器 3.2.2

已修复的错误和故障

  • 已修复 guard 中对推导式和短路表达式进行求值时存在的错误。

    自身 ID:OTP-8310

改进和新功能

  • 对 WX 版本的调试器进行了杂项更正。

    自身 ID:OTP-8346

调试器 3.2.1

改进和新功能

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

    自身 ID:OTP-8201

调试器 3.2

改进和新功能

  • 添加了一个新的 gui,使用 debugger:start(gs) 启动旧的 gui。

    自身 ID:OTP-7366

  • 已删除未记录、不支持且已弃用的 guard BIF is_constant/1

    * 与 R12B 的不兼容性 *

    自身 ID:OTP-7673

调试器 3.1.1.4

改进和新功能

  • 现在实验性地支持从存档文件加载代码。有关更多信息,请参阅 codeiniterl_prim_loaderescript 的文档。

    已改进 escripts 的错误处理。

    现在,escript 可以为模拟器设置显式参数,例如 -smp enabled

    现在,escript 可以包含预编译的 beam 文件。

    现在,escript 可以包含一个包含一个或多个应用程序的存档文件(实验性)。

    已删除内部模块 code_aux

    自身 ID:OTP-7548 辅助 ID:otp-6622

调试器 3.1.1.3

改进和新特性

  • 小的改动。

    自有 ID:OTP-7388

调试器 3.1.1.2

改进和新特性

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

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

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

调试器 3.1.1.1

改进和新特性

  • Makefile 的小改动。

    自有 ID:OTP-6689

  • 已使用现代的守卫测试(例如 is_list())替换了过时的守卫测试(例如 list())。

    自有 ID:OTP-6725

调试器 3.1.1

修复的 Bug 和故障

  • dbg_ieval 中删除了一些无效代码。

    自有 ID:OTP-6552

调试器 3.1

修复的 Bug 和故障

  • 当应该求值为 fun 的表达式引用了未解释的代码时,解释器无法处理这种情况。

    自有 ID:OTP-6061 辅助 ID:seq10295

  • 调试器中 gen_server 调用的超时现在设置为 infinity

    自有 ID:OTP-6103

改进和新特性

  • 通知窗口现在在其父窗口上居中显示。

    自有 ID:OTP-6011 辅助 ID:OTP-5987

  • 当解释模块时,现在会检查该模块是否不属于 Kernel、STDLIB、GS 或 Debugger 应用程序,因为解释调试器/解释器本身使用的模块将导致死锁或模拟器崩溃。

    此外,如果 Mod 属于上述应用程序之一,则 int:interpretable(Mod) 已扩展为返回 {error,{app,App}}

    自有 ID:OTP-6020

  • 现在支持 andalso/orelse

    自有 ID:OTP-6021 辅助 ID:OTP-5894

调试器 3.0.1

修复的 Bug 和故障

  • 当评估 fun 函数子句的守卫表达式时,没有考虑环境变量绑定。

    自有 ID:OTP-5837

改进和新特性

  • 对 GUI 进行了一些较小的改进

    • 现在可以在函数断点对话窗口中进行多项选择。
    • 在断点对话窗口中右键单击“模块”条目将打开一个弹出菜单,从中可以选择相应的(解释的)模块。
    • 现在可以使用监视窗口左侧部分的按钮更改自动附加选项,而不仅仅是通过相应的菜单按钮。
    • 已添加用于启用和禁用所有断点的按钮。
    • 修正了“查看模块”窗口的键盘快捷键。

    自有 ID:OTP-4284

调试器 3.0

改进和新特性

  • 调试器现在可以处理 try-catch。这意味着必须重写解释器的很大一部分。此外,对 GUI 进行了一些小的更改。

    自有 ID:OTP-5730

调试器 2.3.3

改进和新特性

  • 现在可以加密 Beam 文件中的调试信息,以帮助保护源代码的秘密。有关如何提供加密密钥的说明,请参阅 compile 的文档;有关如何提供解密密钥以便可以使用调试器、Xref 或 Cover 等工具的说明,请参阅 beam_lib 的文档。

    现在 beam_lib:chunks/2 函数接受一个额外的块类型“compile_info”,以直接以术语的形式检索编译信息。(感谢 Tobias Lindahl。)

    自有 ID:OTP-5460 辅助 ID:seq9787

调试器 2.3.2

修复的 Bug 和故障

  • 图形应用程序现在在正确的位置搜索 HTML 文档。

    自有 ID:OTP-5381

调试器 2.3.1

修复的 Bug 和故障

  • 已将包支持添加到调试器。感谢 HiPE 项目中的 Richard Carlsson。

    自有 ID:OTP-5255

改进和新特性

  • 已更新以处理最新版本的编译器。

    自有 ID:OTP-5265