Начал читать ман по отладке из комманной строки в gdb, параллельно пробую.
Подключился к работающему приложению, посмотрел треды, фреймы и сделал continue
(gdb) continue
Continuing.
а как дальше остановить выполнение приложения? на комманды, вводимые после continue gdb никак не реагирует, приложение работает
On 09/18/2012 05:47 PM, Аноним 207 wrote:
> Начал читать ман по отладке из комманной строки в gdb, параллельно пробую.
> Подключился к работающему приложению, посмотрел треды, фреймы и сделал continue
>
> (gdb) continue
> Continuing.
>
> а как дальше остановить выполнение приложения?
C-c,
если потом надо выйти, quit или detach
на комманды, вводимые после
> continue gdb никак не реагирует, приложение работает
потому что в этом режиме GDB не воспринимает комманды,
для того, чтобы он воспринимал и перешёл в коммандный режим,
приложение надо остановить, Ctrl-c.
Заметь, Ctrl-c в GDB никогда не вызывает сигнал приложению
и GDB никогда не останавливает приложение, только коммандами
(kill и другие).
Posted via RSDN NNTP Server 2.1 beta
Здравствуйте, MasterZiv, Вы писали:
MZ>потому что в этом режиме GDB не воспринимает комманды,
MZ>для того, чтобы он воспринимал и перешёл в коммандный режим,
MZ>приложение надо остановить, Ctrl-c.
MZ>Заметь, Ctrl-c в GDB никогда не вызывает сигнал приложению
MZ>и GDB никогда не останавливает приложение, только коммандами
MZ>(kill и другие).
Вы бы документацию прочитали.
The default is set to `nostop', `noprint', `pass' for non-erroneous signals such as `SIGALRM', `SIGWINCH' and `SIGCHLD', and to `stop', `print', `pass' for the erroneous signals.
Чтобы SIGINT не вызывал сигнал приложению, надо как минимум сказать ему `handle SIGINT nopass'.
Вот тогда он станет хоть как-то годиться на останов без передачи приложению. (Не учитываем проблемы с тредами, это отдельная тема.)