Insane Object 或 fpsane.cpp 錯誤

更新 Oct 19, 2020

產品資訊

軟體

  • LabVIEW Full
  • LabVIEW Professional

問題敘述

我收到有關“ Insane Object ”錯誤的消息。 “ Insane Object ”錯誤是什麼意思,我該怎麼辦?

解決方案

該消息表示 LabVIEW 中的對象(如 Wire 或 Loop tunnel)未通過稱為完整性檢查的內部測試(請參見下面的“附加信息”中的 insane object 錯誤示例)。如果錯誤足夠嚴重,則由於某些問題已損壞,LabVIEW 將退出。在每次保存之前都要進行完整性檢查,以確保損壞的 VI 不會覆蓋良好的 VI。它們也發生在編譯過程中。因此,經常進行健全性檢查。對話框出現後,許多程式錯亂實際上已得到修復(made sane),並且不會再次出現,因此,在收到 insane object 錯誤後,您應該做的第一件事就是嘗試製作 VI 的備份副本,運行它並執行進行一些其他編輯以查看問題是否已自動解決。

VI 損壞很少發生。它們可能是由於硬碟損壞而發生的,但這通常會導致文件無法再加載。由於程式開發者執行某些操作會破壞 LabVIEW 數據類型(可能是調用外部程式的結果),因此也會發生損壞。

以下步驟將有助於診斷此錯誤的原因:
  1. 查看錯誤日誌,並確定問題是否出在前面板(“ FPHP”)或程序框圖(“ BDHP”)上的組件(wire,控件,指示器等)上(請參閱下面的“ 錯誤日誌內容”部分) )。刪除並重新創建最近創建的對象,並在錯誤消息中使用文本來確定要重建的對象。示例:對於上面的第二條消息,最好刪除並重新創建最近創建的 Loop tunnel。還有一種從錯誤日誌消息中直接找到物件的方法,如下面的“ 查找Insane Object”部分所述。
  2. 如果 VI 很小,請嘗試選擇整個圖表並將其複製到新的 VI。保存新的 VI 後,很有可能不再出現 Insane Object 錯誤。
  3. 如果 VI 太大而無法執行上述步驟,則可以將 VI 複製到硬碟(如果可用,則複製到網絡)並在第二台電腦上將其打開。如果沒有出現 Insane Object 錯誤,請保存 VI(在第二台電腦上),並將其傳輸回原始電腦(通過硬碟或網絡)。現在,新的,未損壞的 VI 版本應該可以運行,而不會產生 Insane Object 錯誤。
  4. 如果發現一致的編輯操作順序導致 Insane Object 錯誤,或者您無法自行解決該錯誤,請聯繫 National Instruments 技術支持(請參見下面的相關鏈接)以尋求幫助。

相關資訊

錯誤日誌內容
以下是 insane object 錯誤的示例:
  • Insane Object at BDHP+4D50, UID 1562, in "sksks.vi": (graphics) (0x80):wire segment (WIRE)
  • Insane Object at BDHP+5CA0, UID 5864, in "CAPL3.vi": (graphics) (0x80):loop tunnel (DCO)
在上面的第一個示例中,錯誤消息本身提供了有關哪個 insane object 的信息。 BDHP 表示有問題的物件存在於程序框圖堆中,而不是前面板堆的 FPHP。 + 4D50 是對象所在堆中的十六進制偏移量。 VI 的前面板或框圖中的每個元素都可以通過其 UID 進行標識。“wire segment”文本表示該對像是線對象。 “graphics”文本表示物件錯亂與圖形有關,這意味著它並不嚴重,很可能會自動修復。

上面的第二條消息是類似的,但指的是 loop tunnel(即,在導線與環路邊緣交叉處形成的隧道),而不是導線。這些“insane object”中的許多報告為 fpsane 錯誤,您應該通過打開日誌文件來查找實際錯誤。

尋找 insane object
有一種方法可以直接使用錯誤消息中的UID從相應VI的錯誤日誌中找到 insane object。
  1. 關閉 LabVIEW
  2. 在位於 LabVIEW 安裝目錄(C:\Program Files (x86)\National Instruments\LabVIEW 20xx)的LabVIEW.ini 文件中添加密鑰“ LVdebugKeys=True”。
  3. 打開損壞的 VI
  4. 按 Ctrl+Shift+D+H 打開堆查看窗口(請參見下圖)
  5. 在左上角的窗口中選擇帶有損壞物件的 VI,然後選擇 FPHP 或 BDHP(示例中為 Temperature Limit.vi)
  6. 單擊 UO,在右上角的窗口中將視圖從內存地址更改為 UID
  7. 從右上方窗口的錯誤消息中選擇具有 UID 的物件
  8. 單擊 F ,相應的物件將在前面板/框圖中突出顯示。