LabVIEWクラッシュをトラブルシューティングする

更新しました Oct 11, 2019

使用製品

Software

  • LabVIEW

問題

LabVIEW開発環境を操作している際に、LabVIEWがクラッシュして次のエラーが表示されました。
 

LabVIEW 20xxで問題が発生したため、終了する必要があります。このレポートをナショナルインスツルメンツに直接送信することにより、この問題の診断と修正を支援できます。


解決策

LabVIEW内部エラーおよびクラッシュの初期トラブルシューティング手順:

  1. LabVIEWクラッシュレポートダイアログボックスからクラッシュレポートをNIに送信します。NIがクラッシュを診断するのに役立つ関連情報を追加します。
  2. クラッシュを一貫して再現できるかどうかを判断します。これにより、クラッシュの原因を簡単に診断できます。クラッシュを再現できる場合は、技術サポートデータベースおよびNIコミュニティで16進コードとクラッシュが発生したときに実行している項目を含めて同様のクラッシュを検索してみます。
  3. 最新のLabVIEWパッチをインストールします。
  4. 使用しているLabVIEWバージョンのLabVIEW既知の問題リストを確認します。

 

 

さらなるトラブルシューティング手順:

  • 警告の原因を絞り込むようにします。使用するコードとハードウェア数を減らしてクラッシュの最小再現ケースを作成します。クラッシュに関連しない部分を排除できる場合、この特定のクラッシュの根本原因を見つける可能性が高くなります。これを行うトラブルシューティングは、以下のとおりです。
     
    • 実行ファイルでクラッシュが発生した場合、LabVIEW開発環境からVIを実行する際にも同じ動作が発生するかどうかを確認します。実行ファイルだけに問題がある場合は、ランタイムエンジンに問題がある可能性があります。
    • ダイアグラム無効ストラクチャを使用して、コードの一部を無効にしてみます。これにより、コードのどこでクラッシュが発生するかを絞り込むことができます。
    • すべてのハードウェアを取り外してみます。それでもクラッシュする場合は、ソフトウェアのトラブルシューティングを続行します。ハードウェアを取り外すとクラッシュが修正される場合、原因をハードウェアに絞り込むことができます。別の種類のハードウェアを使用して、クラッシュがハードウェアのタイプに固有の問題があるかどうかを確認します。
    • 別のコンピュータで同じ挙動となるかを確認します。クラッシュは、コンピュータの環境に関係している可能性があります。
    • メモリを監視して、メモリリークをチェックします。
       
  • WinDbgを使用して、クラッシュのトラブルシューティングを行います。クラッシュが再現可能な場合、このツールでLabVIEWプロセスを監視して、クラッシュを再度発生させます。このツールを使用すると、クラッシュの原因を詳細に調べることができます。
  • ハードウェアを使用している場合は、すべてのメモリリファレンスを閉じていることを確認します。リファレンスを誤用すると、メモリリークが発生する可能性があります。
  • すべてのエラークラスタを配線して、監視されていることを確認します。気づいていないエラーが以前に発生した可能性があります。エラー番号は、問題の原因を特定するためにあり、エラーの説明ダイアログボックス(ヘルプ>>エラーの説明...)で検索して、エラーに関する説明を見つけることができます。
  • .NET frameworkまたはDLLを使用している場合は、それらを削除して、クラッシュが引き続き発生するかどうかを確認します。DLLが、クラッシュの発生源である可能性があります。
  • 1つのVIだけで一貫してクラッシュが発生する場合は、ブロックダイアグラムの内容全体を新しいVIにコピーしてみます。これにより、クラッシュの原因となる破損を削除できる場合があります。
  • VIを一括コンパイルします。LabVIEWを旧バージョンからアップグレードした場合、更新されていない古いVIがいくつかある可能性があります。
  • クラッシュは、コード内の「Insane Object」または「fsane.cpp」エラーによっても発生する可能性があります。
  • LabVIEWエラーログ、またはリアルタイムシステムを扱う場合はリアルタイムエラーログを参照します。
  • 実行ファイルでクラッシュが発生している場合は、必要なすべてのドライバが配布先のコンピュータにインストールされていることを確認します。
  • 独自のロギングを実装して、クラッシュの発生場所に関する詳細情報を取得します。

 

 

追加のトラブルシューティング手順:

クラッシュの根本原因を特定できる場合、次の手順は回避策を見つけるか、可能な限り小さい規模でクラッシュを再現することです。LabVIEWのバグである場合は、ナショナルインスツルメンツの技術サポートに連絡して、是正処置要求(CAR: Corrective Action Request)を提出できます。

追加情報

LabVIEW内部エラーとは何ですか?

LabVIEW内部エラーは、LabVIEW内で何か不適切または予期しないことが発生したことを示しています。重大度のレベルに応じて、LabVIEWを終了または再起動すると、その直後または場合によっては後でエラーダイアログが表示されます。重大度レベルとして、DAbortDWarn、およびDWarnInternalの3つがあります。
 

  • DAbortは回復不能であり、LabVIEWはすぐに終了します。これにより、さらに破損する可能性が回避され、上記のようなLabVIEWクラッシュレポートダイアログボックスが表示されます。
  • DWarnおよびDWarnInternalは回復可能なエラーであり、LabVIEWを終了させることはありませんが、まだ予期しないものであり、レポートされます。LabVIEWの設定によっては、LabVIEWを終了するときに内部警告レポートダイアログボックスが表示される場合があります。

この記事はお役に立ちましたか?

いいえ