檢視原始碼 當機傾印檢視器

簡介

當機傾印檢視器是一個基於 WxWidgets 的工具,用於瀏覽 Erlang 當機傾印檔。

開始使用

啟動當機傾印檢視器最簡單的方法是使用 shell 指令碼 cdv,並將 Erlang 當機傾印檔的完整路徑作為參數。該指令碼位於 Observer 應用程式的 priv 目錄中。這將啟動當機傾印檢視器 GUI 並載入指定的檔案。如果沒有指定檔案名稱,將會開啟一個檔案對話方塊,可在其中選擇檔案。

在 Windows 下,可以使用批次檔 cdv.bat

當機傾印檢視器也可以從 Erlang 節點透過呼叫 crashdump_viewer:start/0crashdump_viewer:start/1 來啟動。

GUI

當當機傾印檢視器載入當機傾印檔後,會開啟 GUI 主視窗。它包含一個標題列、一個選單列、資訊標籤和一個狀態列。

標題列會顯示目前載入的當機傾印檔的名稱。

選單列包含一個檔案選單和一個說明選單。從檔案選單中,可以載入新的當機傾印檔或終止工具。從說明選單中,可以開啟本使用者指南以及 ERTS 應用程式中的「如何解釋 Erlang 當機傾印」章節。「如何解釋 Erlang 當機傾印」詳細描述了原始當機傾印檔,並包括資訊頁面中每個欄位的相關資訊。「如何解釋 Erlang 當機傾印」也可以在 OTP 線上文件中找到。

視窗底部的狀態列會在目前載入的傾印檔被截斷時顯示警告。

主視窗的中心區域包含資訊標籤。每個標籤都會顯示關於特定項目或項目列表的資訊。點擊標籤標題即可選擇標籤。

從顯示項目列表的標籤(例如,處理程序標籤或標籤)中,可以透過雙擊某列或右鍵點擊該列並從下拉選單中選擇項目來開啟一個包含更多資訊的新視窗。新視窗稱為詳細資料視窗。可以為處理程序、埠、節點和模組開啟詳細資料視窗。

詳細資料視窗中顯示的資訊可能包含指向處理程序或埠的連結。點擊其中一個連結會開啟該處理程序或埠的詳細資料視窗。如果處理程序或埠位於遠端節點上,則沒有可用資訊。點擊連結會顯示一個對話方塊,您可以在其中選擇開啟遠端節點的詳細資料視窗。

某些標籤包含一個左側選單,可以在其中選擇資訊區域的子項目。點擊其中一行,資訊會顯示在右側的資訊區域中。

標籤內容

主視窗中的每個標籤都包含一個資訊頁面。如果找不到某個項目的資訊,該頁面將為空白。找不到項目資訊的原因可能是以下幾種:

  • 這是來自舊版 OTP 發行版本的傾印檔,其中未寫入此項目。
  • 該項目在發生故障時不存在於系統中。
  • 傾印檔被截斷。在這種情況下,主視窗的狀態列會顯示警告。

即使存在關於某個項目的某些資訊,如果傾印檔來自舊版 OTP 發行版本,也可能存在空白欄位。

任何欄位中的值 -1 表示「未知」,並且在大多數情況下,這表示傾印檔在該欄位附近被截斷。

以下章節描述資訊標籤中的某些欄位。這些欄位不存在於原始當機傾印檔中,或者在某些方面與原始當機傾印檔中的欄位不同。關於其他欄位的詳細資訊,請參閱 ERTS 使用者指南中的「如何解釋 Erlang 當機傾印」章節。也可以從主視窗的說明選單中開啟該章節。以下章節也有連結指向「如何解釋 Erlang 當機傾印」中的相關資訊。

一般標籤

一般標籤顯示傾印檔的簡短概述。

以下欄位未在 ERTS 使用者指南中描述:

  • 建立當機傾印的時間 - 發生故障的時間。

  • 已配置的記憶體 - 已配置的總位元組數,相當於 c:memory(total)

  • 最大記憶體 - 在原始節點的生命週期內已配置的最大位元組數。僅當 Erlang 執行時系統以檢測方式執行時才會顯示此值。

  • 原子 - 如果傾印檔中可用,則這是原子表中的原子總數。如果原子表的大小不可用,則會顯示在傾印檔中可見的原子數。

  • 處理程序 - 在傾印檔中可見的處理程序數。

  • ETS 表格 - 在傾印檔中可見的 ETS 表格數。

  • 函式 - 在傾印檔中可見的函式數。

有關詳細資訊,請參閱 ERTS 中「如何解釋 Erlang 當機傾印」章節的 一般資訊

處理程序標籤

處理程序標籤顯示在當機傾印檔中找到的所有處理程序列表,包括每個處理程序的簡要資訊。預設情況下,處理程序會依其 pid 排序。若要依其他主題排序,請點擊所需的欄標題。

記憶體欄顯示在 Erlang/OTP R16B01 中新增至當機傾印檔的「記憶體」欄位。這是處理程序使用的記憶體總量。對於來自較早版本的當機傾印檔,此欄顯示「堆疊 + 堆積」欄位。該值始終以位元組為單位。

若要檢視特定處理程序的詳細資訊,請雙擊列表中的列,或右鍵點擊該列並選擇「<pid>」的屬性

有關詳細資訊,請參閱 ERTS 中「如何解釋 Erlang 當機傾印」章節的 處理程序資訊

埠標籤

標籤與處理程序標籤類似,只是它列出了在當機傾印檔中找到的所有埠。

若要檢視特定埠的更多詳細資訊,請雙擊該列或右鍵點擊該列,然後選擇「<port>」的屬性。從右鍵選單中,您也可以選擇「<pid>」的屬性,其中 <pid> 是連接到埠的處理程序。

有關詳細資訊,請參閱 ERTS 中「如何解釋 Erlang 當機傾印」章節的 埠資訊

ETS 表格標籤

ETS 表格標籤顯示在傾印檔中找到的所有 ETS 表格資訊。Id 與原始當機傾印檔中的「表格」欄位相同。記憶體是原始當機傾印檔中「字」欄位轉換為位元組。對於樹狀表格,在「物件」欄位中沒有值。

若要開啟關於表格的詳細資訊頁面,請雙擊該列,或右鍵點擊該列並選擇「識別符」的屬性

若要開啟關於 ETS 表格擁有者處理程序的詳細資訊頁面,請右鍵點擊該列並選擇「<pid>」的屬性

有關詳細資訊,請參閱 ERTS 中「如何解釋 Erlang 當機傾印」章節的 ETS 表格

計時器標籤

計時器標籤顯示在傾印檔中找到的所有計時器資訊。

若要開啟關於計時器擁有者處理程序的詳細資訊頁面,請右鍵點擊該列並選擇「<pid>」的屬性

雙擊計時器標籤中的列沒有任何效果。

有關詳細資訊,請參閱 ERTS 中「如何解釋 Erlang 當機傾印」章節的 計時器

排程器標籤

排程器標籤顯示在傾印檔中找到的所有排程器資訊。

若要開啟關於排程器的詳細資訊頁面,請雙擊該列,或右鍵點擊該列並選擇「識別符」的屬性

有關詳細資訊,請參閱 ERTS 中「如何解釋 Erlang 當機傾印」章節的 排程器資訊

函式標籤

函式標籤顯示在傾印檔中找到的所有函式資訊。

若要開啟關於函式所屬模組的詳細資訊頁面,請右鍵點擊該列並選擇「<mod>」的屬性

雙擊函式標籤中的列沒有任何效果。

有關詳細資訊,請參閱 ERTS 中「如何解釋 Erlang 當機傾印」章節的 函式資訊

原子標籤

原子標籤列出在傾印檔中找到的所有原子。預設情況下,原子會依建立順序從先到後排序。這與原始當機傾印檔相反,在原始當機傾印檔中,原子會從後到前列出,這表示如果傾印檔在原子列表的中間被截斷,則只有最後建立的原子才會在原子標籤中可見。

有關詳細資訊,請參閱 ERTS 中「如何解釋 Erlang 當機傾印」章節的 原子

節點標籤

節點標籤顯示從當機傾印檔中參考的所有外部 Erlang 節點的列表。

如果頁面為空白,則表示以下其中之一:

  • 當機節點未分配。
  • 當機節點已分配,但沒有對其他節點的參考。
  • 傾印檔被截斷。

如果節點已分配,則所有被參考的節點都可見。連線類型欄顯示節點是可見、隱藏還是未連線。可見節點是與原始節點具有活動連線的活動節點。隱藏節點與可見節點相同,只是它們以 -hidden 旗標啟動。未連線節點是不再連線到原始節點的節點,但存在參考(即,處理程序或埠識別符)。

若要檢視關於節點的更多詳細資訊,請雙擊該列,或右鍵點擊該列並選擇「節點 <node>」的屬性。從右鍵選單中,您也可以選擇「<port>」的屬性,以開啟控制埠的詳細資訊視窗。

在節點的詳細資訊視窗中,會顯示原始節點上的處理程序與連接節點之間的任何現有連結和監視器。額外資訊可以包含除錯資訊(即,如果模擬器是以除錯編譯的方式編譯的,則會寫入特殊資訊)或錯誤資訊。

有關詳細資訊,請參閱 ERTS 中「如何解釋 Erlang 當機傾印」章節的 分配資訊

模組頁籤

模組頁籤會列出起始節點上載入的所有模組,以及目前的程式碼大小。如果存在舊程式碼,也會顯示舊的大小。

若要檢視特定模組的詳細資訊,請雙擊該列,或右鍵點擊並選擇<mod> 的屬性

詳細資訊請參閱 ERTS 中「如何解讀 Erlang 當機傾印」章節的已載入模組資訊

記憶體頁籤

記憶體頁籤顯示記憶體和配置器資訊。您可以從左側選單選擇下列項目

  • 記憶體 - 請參閱 ERTS 中「如何解讀 Erlang 當機傾印」章節的記憶體資訊

  • 配置器摘要 - 此頁面呈現其下所有配置器的值摘要。

  • <配置器> - 每個配置器一個項目。請參閱 ERTS 中「如何解讀 Erlang 當機傾印」章節的配置器

  • 已配置區域 - 請參閱 ERTS 中「如何解讀 Erlang 當機傾印」章節的已配置區域

內部表格頁籤

內部表格頁籤中,您可以從左側選單選擇雜湊表索引表內部 ETS 表格

詳細資訊請參閱 ERTS 中「如何解讀 Erlang 當機傾印」章節的內部表格資訊