QT5.11, Debian, GDB
Клиент слушает UDP порт, принимает данные и обрабатывает. Какое то время может час, а может и несколько дней, все нормально, а потом прием прерывается. В режиме отладчика событие readyRead() не возникает, по крайней мере точка останова не срабатывает.
QByteArray m_InternalBuffer; // буфер чтения
void udpClient::on_readyRead()
{
m_InternalBuffer.clear();
while (udpSocket->hasPendingDatagrams())
{
QByteArray datagram;
qint64 l=udpSocket->pendingDatagramSize();
datagram.resize(l);
udpSocket->readDatagram(datagram.data(),l);
m_InternalBuffer.append(datagram);
}
if (m_InternalBuffer.size()>0)
{
inByte+=m_InternalBuffer.size(); // принято всего
QString rez=get(m_InternalBuffer);// обработка принятой информации
// выдача на отображение родителю
if (rc) QCoreApplication::sendEvent(rc,new Message_send_data(rez,numbKanal,inByte));
qApp->processEvents();
}
}
Перезапуск источника UDP не помогает.
Перезапуск приемника UDP - опять нормальная работа какое то время.
Где искать причину и как? Как в отладчике можно найти точку, где сейчас выполняется код запущенного под отладчиком приложения?