檢視原始碼 除錯器版本說明
本文檔描述了對除錯器應用程式所做的變更。
除錯器 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 的此語法。
改進和新功能
除錯器 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
改進和新功能
組態檔案
.erlang
、.erlang.cookie
和.erlang.crypt
現在可以位於 XDG 組態首頁目錄中。請參閱每個檔案的文件和
filename:basedir/2
以取得更多詳細資訊。內部 ID:OTP-17554 輔助 ID:GH-5016 PR-5408 OTP-17821
除錯器 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_lib
、common_test
和qlc
也會提供相同的擴充錯誤資訊。對於希望提供相同擴充錯誤資訊的應用程式,有新的函式
erl_error:format_exception/3
和erl_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/1
和iaa/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
改進與新功能
現在實驗性地支援從歸檔檔案載入程式碼。請參閱
code
、init
、erl_prim_loader
和escript
的文件以獲取更多資訊。改進了
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