GDB помощь клиент-сервер - PullRequest
       28

GDB помощь клиент-сервер

0 голосов
/ 25 февраля 2012

Я учусь в классе компьютерных сетей и пишу простой сервер, который просто отправляет и получает сообщения от клиента (что дано). Однако мой сервер получает ошибки сегментации, когда данный клиент соединяется. Как я могу запустить GDB для отладки этого? Я пытаюсь запустить сервер с gdb, но он просто зависает, потому что на моем сервере бесконечный цикл while, и я не знаю, как запустить клиент одновременно, чтобы вызвать segfault. Кто-нибудь может помочь?

Ответы [ 2 ]

1 голос
/ 25 февраля 2012

Я не знаю, как запустить клиент одновременно, чтобы вызвать segfault.

Простой: вы открываете другое окно и запускаете клиент из там .

0 голосов
/ 25 февраля 2012

Если ваш сервер порождает (fork ()) отдельный процесс для каждого подключенного клиента, вам, вероятно, необходимо установить следующий режим форка: http://www.delorie.com/gnu/docs/gdb/gdb_26.html "set follow-fork-mode child" начнет отладку порожденного процесса сразу после accept () и fork ().

Другим вариантом является анализ файла ядра. По умолчанию Coredumps отключены, поэтому вам нужно включить их:

ulimit -c unlimited

Запустите ваш сервер, разрешите ему segfault и запустите GDB, указывая его на ядро ​​и ваш двоичный файл:

gdb -c ./core.xxxx ./server
...