Я работаю над встроенной системой с Linux.Клиентский поток записывает некоторые данные в сокет, но то, что серверный поток читает с другой стороны, отличается от того, что было записано.Что приводит к сбою потока (и родительского процесса).
Я новичок в сети и Linux.Я сбросил каждый фрагмент данных, который записывается, все нормально.
Функция trace в gdb показывает следующую информацию.
(gdb)
#0 0x00007f62be8e8670 in getenv () from /lib/libc.so.6
#1 0x00007f62be92057a in __libc_message () from /lib/libc.so.6
#2 0x00007f62be99f927 in __fortify_fail () from /lib/libc.so.6
#3 0x00007f62be99f8f0 in __stack_chk_fail () from /lib/libc.so.6
#4 0x0000000000406471 in reading (sockFd=15) at __line_number_in_the_program__
#5 0x793bcf318b18bb01 in ?? ()
#6 0x117d0300942ff567 in ?? ()
#7 0x0000000100000000 in ?? ()
..
..
..
Идет до # 785 с некоторыми [random] address.
чтение () - это функция, которая обрабатывает прочитанные данные в потоке сервера.
Я подозреваю, что внутри сокета что-то идет не так.Есть ли способ увидеть данные, которые находятся в буфере сокетов (клиент / сервер), не читая их?Или любой другой способ отладки с помощью gdb?
Уже есть некоторые проверки для правильной обработки прочитанных данных, но они также не помогают.