LINUX.ORG.RU

Странное поведение fgets под отладкой

 , ,


0

2

Собственно под отладкой через gdbserver он почему-то не останавливается в ожидании ввода, а просто прет дальше (причем в первый байт массива всеже записывается нулевой символ).

При этом если запускать прогу без отладчика, то этот момент работает как положено.

ЧЯДНТ?

★★★★

Последнее исправление: RiseOfDeath (всего исправлений: 2)

Ответ на: комментарий от RiseOfDeath

Не знаю вообще, оно ли, но в man gdbserver:

gdbserver <comm> <prog> [<args>...] The comm parameter specifies how should the server communicate with GDB; ... , or "-" or «stdio» to use stdin/stdout of «gdbserver».

Просто предположение, могу ошибаться.

backbone ★★★★★
()
Ответ на: комментарий от backbone

Хм... фиг его знает...

Маленькое уточнение - fgets отрабатывает нормально строго два раза подряд, а на третьем происходит то, что я написал в первом посте.

RiseOfDeath ★★★★
() автор топика
Последнее исправление: RiseOfDeath (всего исправлений: 1)
Ответ на: комментарий от RiseOfDeath

Если использую терминал сервера, т.е. ввод данных на сервере, то всё ок, а если так:

$ gdb
target remote | ssh -T my_server_IP gdbserver - a.out
, то всё время fgets() NULL возвращает.

backbone ★★★★★
()
Последнее исправление: backbone (всего исправлений: 1)
Ответ на: комментарий от backbone

Методом тыка слегка локализовал баг.

Если на сервере сделать gdbserver localhost:myport myprogramm, ана хосте сделать gdb remote my_server_IP:myport

То оно работает, правда приходится вводить все на стороне сервера.

RiseOfDeath ★★★★
() автор топика

Вероятно следует проверять возврат fgets и errno и реагировать соответственно.

Elyas ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.