Solaris GDB: как приостановить выполнение? - PullRequest
7 голосов
/ 05 марта 2009

Я использую GDB для отладки закрытой исходной программы на Solaris 10 x86.

Я присоединяю gdb к программе и продолжаю выполнение, однако, когда я хочу приостановить выполнение позже, чтобы проверить некоторую память, я не могу. Когда я нажимаю CTRL-C, он печатает только ^ C, а не останавливает программу и не переводит меня в приглашение (gdb).

bash-3.00# gdb --pid=1521
GNU gdb 6.6
Copyright (C) 2006 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-pc-solaris2.10".
Attaching to process 1521
Retry #1:
Retry #2:
Retry #3:
Retry #4:
[New LWP 1]
0xfe3b5a23 in ?? ()
(gdb) c
Continuing.
^C^C^C^C^C^C^C^C

Как мне вернуться к приглашению (gdb)? Я делаю что-то не так или как мне заставить это работать.

Ответы [ 3 ]

4 голосов
/ 05 марта 2009

Только что нашел обходной путь. С другого терминала введите следующую команду:

kill -INT 1521

GDB приостановит выполнение после отладки программы, получающей SIGINT.

0 голосов
/ 14 июля 2009

Поскольку вы используете Solaris, и я вижу, что вы используете bash, вы, вероятно, не настраиваете свой терминал должным образом, bash часто может справиться со многими из вас за вас, но если вы работаете в ksh или чем-то еще, ваш backspace может печатать ^ H вместо backspace (в этом случае вам нужно stty стереть '^ H' ... вы всегда можете установить консоль с stty sane.

Вероятная проблема здесь, которая не является ошибкой, состоит в том, что приложение, которое вы отлаживаете, сбрасывает ваш термин, я сейчас не на Solaris, но GNU stty позволяет вам делать что-то вроде stty tostop,

  • [-] TOSTOP остановить фоновые задания, которые пытаются записать в терминал

Вы также можете запустить reset или tset с другого терминала и перенастроить свой ^ C

изнутри GDB, вы можете использовать псевдоним "tty" или установить inferior-tty / path / to / term

Set terminal for future runs of program being debugged.
Usage: set inferior-tty /dev/pts/1
0 голосов
/ 06 марта 2009

Это будет ошибка в GDB.

Если вы можете воспроизвести это с текущей версией GDB из CVS Head , пожалуйста, отправьте ошибку .

...