檢視原始碼 除錯器版本說明

本文檔描述了對除錯器應用程式所做的變更。

除錯器 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-8963, PR-8987

改進和新功能

  • 已更新 Erlang/OTP 類型規格,以消除重疊的網域。

    內部 ID:OTP-19310 輔助 ID:GH-8810, GH-8821, PR-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

已修正的錯誤和故障

  • Map comprehensions 現在可以在除錯器中運作。

    內部 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。

    在二進位比對中,現在允許比對區段的大小為保護子句運算式,類似地,在 map 比對中,現在金鑰可以是保護子句運算式。如需更多詳細資訊,請參閱 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

已修正的錯誤和故障

  • 修正了一個錯誤,其中在二進位中呼叫函式會導致除錯器崩潰。

    內部 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、埠、參考和外部函數,只要它們可以在執行中的系統中建立。

    自有 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

  • 當除錯器函式 ia/1iaa/1 嘗試叫用舊的且已移除的 gs 為基礎的 GUI 函式時會當機。

    自有 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

    已在 test_server 中新增一個測試 appup 檔案的新測試公用程式。現在,OTP 中的大多數應用程式都會使用這個公用程式。

    (感謝 Tobias Schlager)

    自有 ID:OTP-11744

改進與新功能

  • 已移除以 gs 為基礎的應用程式和以 gs 為基礎的後端。observer 應用程式會取代已移除的應用程式。

    * 可能的不相容性 *

    自有 ID:OTP-10915

  • 在除錯器中支援 Map 語法(感謝 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

改進與新功能

  • 現在允許在 'fun M:F/A' 中使用變數,如 Richard O'Keefe 在 EEP-23 中建議的。

    已以不相容的方式變更抽象格式中 '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

已修正錯誤與故障

  • 已修正在守衛中評估推導和短路運算式的錯誤。

    自有 ID:OTP-8310

改進與新功能

  • 對除錯器的 WX 版本進行了各種修正。

    自有 ID:OTP-8346

除錯器 3.2.1

改進與新功能

  • 現在文件是使用大多數平台上都有的開源工具 (xsltproc 和 fop) 建置的。一個可見的改變是框架被移除。

    自有 ID:OTP-8201

除錯器 3.2

改進與新功能

  • 新增了一個新的 GUI,舊的 GUI 使用 `debugger:start(gs)` 啟動。

    自有 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

  • 過時的 guard 測試 (例如 list()) 已被現代的 guard 測試 (例如 is_list()) 取代。

    自有 ID:OTP-6725

除錯器 3.1.1

修正的錯誤與故障

  • dbg_ieval 中移除了一些無效程式碼。

    自有 ID:OTP-6552

除錯器 3.1

修正的錯誤與故障

  • 當一個應評估為 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

修正的錯誤與故障

  • 當評估 fun 函數子句的 guard 運算式時,環境變數繫結未被考慮在內。

    自有 ID:OTP-5837

改進與新功能

  • GUI 的一些小改進

    • 現在可以在函數斷點對話視窗中進行多重選擇。
    • 在斷點對話視窗中右鍵點擊「模組」條目將會開啟一個快顯功能表,可以從中選擇適當(解譯的)模組。
    • 現在可以使用監控視窗左側的按鈕變更自動附加選項,而不僅僅是使用相應的功能表按鈕。
    • 已新增用於啟用和停用所有斷點的按鈕。
    • 修正了檢視模組視窗的鍵盤快捷鍵。

    自有 ID:OTP-4284

除錯器 3.0

改進與新功能

  • 除錯器現在可以處理 try-catch。這表示必須重寫直譯器的大部分。此外,GUI 也進行了一些小變更。

    自有 ID:OTP-5730

除錯器 2.3.3

改進與新功能

  • 現在可以加密 Beam 檔案中的除錯資訊,以協助保護原始碼的機密性。請參閱 compile 的文件以了解如何提供加密金鑰,以及 beam_lib 的文件以了解如何提供解密金鑰,以便可以使用除錯器、Xref 或 Cover 等工具。

    beam_lib:chunks/2 函數現在接受額外的區塊類型 'compile_info',以直接將編譯資訊作為 term 檢索。(感謝 Tobias Lindahl。)

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

除錯器 2.3.2

修正的錯誤與故障

  • 圖形應用程式現在會在正確的位置搜尋 HTML 文件。

    自有 ID:OTP-5381

除錯器 2.3.1

修正的錯誤與故障

  • 除錯器已新增套件支援。感謝 HiPE 專案中的 Richard Carlsson。

    自有 ID:OTP-5255

改進與新功能

  • 已更新以處理最新版本的編譯器。

    自有 ID:OTP-5265