#c #gdb #fork
#c #gdb #разветвление
Вопрос:
Я пытаюсь отладить процесс, который разветвляется при обработке запроса.
Я установил, follow-fork-mode
чтобы child
разрешить gdb выполнять взлом при достижении точки останова в дочернем элементе. Однако, когда я продолжаю с дочернего элемента, родительский элемент отсоединяется.
Множество документов указывает на эту опцию detach-on-fork
, но если я попытаюсь установить эту опцию, я получу:
(gdb) set detach-on-fork on
No symbol "detach" in current context.
Опция явно связана с: http://sourceware.org/gdb/onlinedocs/gdb/Forks.html
Редактировать: системная информация
>uname -a
Linux localhost 2.6.9-78.0.22.ELsmp #1 SMP Thu Apr 30 19:14:39 EDT 2009 i686 i686 i386 GNU/Linux
>gdb -v
GNU gdb Red Hat Linux (6.3.0.0-1.132.EL4rh)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu".
Правка # 2:
$ gdb -v
GNU gdb Red Hat Linux (6.5-16.el5rh)
(gdb) show detach-on-fork
Whether gdb will detach the child of a fork is on.
Я предполагаю, что это было добавлено где-то между 6.3 и 6.5. Я не знал, что в этом окне была такая старая версия gdb. Спасибо!
Если кто-нибудь из прокомментировавших захочет добавить ответ, я приму его!
Комментарии:
1. Какую ОС / ядро вы используете и какую версию GDB?
2. CentOS 4.4, 2.6.9, GDB 6.3, отредактировал дополнительную информацию в первом сообщении
3. Поддерживает ли GDB 6.3 используемый вами флаг? Возможно, вам потребуется обновить до более поздней версии.
4. Иногда вам просто нужен публичный форум, чтобы начать проверять очевидное. Переключился на другую машину с gdb 6.5, и команда поддерживается.
5. Да, в RHEL / CentOS есть несколько невероятно старых версий программного обеспечения. Это может привести в бешенство.
Ответ №1:
detach-on-fork
Опция была добавлена в GDB 6.5. В то время это работало только в Linux; не уверен, была ли добавлена дополнительная поддержка ОС с тех пор.