Solaris 10 5/08 版本說明

執行除錯程式時的問題

下列是與核心除錯程式相關的問題。

x86: 未預期的 SIGTRAP 訊號導致 dbx 除錯程式當機 (6546562 )

當在 x86 平台上的 Solaris 10 作業系統中使用 dbx 除錯程式,藉以對程式 (可發出或傳送具有訊號處理程式的訊號) 進行除錯時,dbx 可能會從導致除錯程式當機的核心收到未預期的 SIGTRAP 訊號。當 dbx 逐漸傳送訊號、通向中斷點、收集執行階段檢查 (RTC) 資料或者執行依賴於訊號陷阱的任何其他活動時,都會發生此種狀況。

在某些情況下,dbx 會在當機時顯示未預期的 SIGTRAP 訊號警告。例如:


dbx: internal warning: unexpected SIGTRAP!

在其他情況下,dbx 會指示接收 SEGV 訊號。例如:


signal SEGV (no mapping at the fault address) in main at line 29 in file "test.c"

在此情況下,當使用者輸入 cont -sig SEGV 指令來繼續執行 SEGV 訊號時,dbx 會顯示未預期的 SIGTRAP 警告。

此錯誤是在安裝 Kernel Patch 127112 時於 x86 平台上的 Solaris 10 作業系統中引入的。

解決方法:請勿安裝 Kernel Patch 127112。 若已安裝 Kernel Patch,請將其解除安裝。如需有關此錯誤的更多資訊,請參閱位於 http://developers.sun.com/sunstudio/support/news/index.jsp 的「Sun Studio Support News」頁面。

SPARC: 處理 64 位元物件時的 dbx 除錯程式問題 (6347707)

處理某些 64 位元的可執行檔和程式庫時,dbx 除錯程式會因記憶體存取失敗而告終止。不過,此問題不會影響這些 64 位元物件的一般使用。系統會顯示類似下列範例中的錯誤訊息:


dbx: internal error: signal SIGBUS (invalid address alignment)

解決方法:請改用 mdb 除錯程式或 Solaris Dynamic Tracing 功能。這些替代功能可診斷使用 64 位元物件的程序。

變更主 CPU 時可能導致系統發生循環 (4405263)

執行 Solaris 核心除錯程式的系統在針對執行中系統進行除錯時,可能會發生循環,並且擲出不完整的錯誤訊息。變更 OpenBoot PROM 的主 CPU 時會發生此循環。系統會進行重設來修復,以使系統繼續運作。但是,會失去原始的失敗追蹤資訊。因此,您無法執行重大重設的診斷。

解決方法:當系統處於 PROM 層級時,會顯示 OpenBoot 的 ok 提示。在具有多重 CPU 的系統上,ok 提示會跟隨在以大括號括住的編號之後。此編號指出系統中使用中的 CPU。若要在處於 PROM 層級時執行除錯階段作業,請使用下列步驟。

  1. 透過鍵入下列指令將 pil 提升至 f:


    {0} ok h# 0f pil!
    
  2. 使用 switch-cpu 指令選取性地從目前使用中的 CPU 切換到其他 CPU。例如,若要從 CPU #0 切換到 CPU #1,請鍵入下列指令:


    (0) ok 1 switch-cpu
    

    ok 提示會跟隨在您所切換之 CPU 的編號之後。


    {1} ok
  3. 執行除錯程式。

  4. 完成除錯程式階段作業之後,請輸入 reset-all 指令將系統返回至一般使用狀態。


備註 –

確認系統已升級至最新版本的 OpenBoot PROM。