質問: windows10上でQt5のGuiアプリケーションを長時間(30分だったり2時間だったりとまちまち)動かすと、「アプリケーションは動作を停止しました」などのエラーが起きてしまいます。 プログラムはArduinoとシリアル通信してデータを受け取り、それをQPainterでQWidgetを継承したクラスに描写するようなプログラムです。 ![エラーの画像](https://i.stack.imgur.com/ccU3M.jpg) エラーを見ると、配列で範囲外にアクセスしていることが原因のようですが、そのようなことが(少なくとも表面的には)おこるようにはしていないつもりです。原因についていろいろ調べたところ、dllの不足、Debugモードでコンパイルした実行ファイルを使ったから、と思い合ったたのですが、 dllをそろえて他のQtを入れてないPCで動かしても、releaseモードでビルドしたものをつかっても不定期にエラーで止まります。 serial通信が問題なのでしょうか。よく分かりません。 詳しい方、どうか助けてください。お願いいたします。
回答: エラーは`QList`クラスの`operator[]`メソッド中のASSERTION(`Q_ASSERT_X`)で明示的に検知されており、`qFatal`関数(マクロ?)によって出力されています。 #`qFatal`の文書には、デフォルトではプログラムを終了させる、とあるので、そのせいで終了しています。(クラッシュしているわけではない) `QList::operator[]`の呼び出し元がわからないと原因はわからないと思いますので、デバッガでプログラムを起動させて、事象発生時のスタックトレースを確認し、呼び出し元を特定するのがよいと思います。 #`QList`は至る所で使用されているので、呼び出し元を予想するのは困難と思います。