2012-02-02 2 views
16

Что мне хотелось бы узнать, если это возможно, внутри сеанса отладки в Linux (read: gdb :)), чтобы остановить выполнение одного потока, оставив остальные потоки запущенными.Можно ли остановить один поток во время отладки в Linux?

Если кому-то интересно узнать, зачем читать: Я написал программный контрольный класс C++ (используя Qt). Я тестировал его с помощью простой многопоточной программы, но я бы хотел протестировать код, как только я интегрирую его в реальное приложение. Если бы я мог остановить поток от отладчика, это упростит этот этап тестирования. :)

Приветствия Sergio

+7

** Извинения ** более точный поиск в google позволил мне найти эту ссылку: (http://sourceware.org/gdb/onlinedocs/gdb/Non_002dStop-Mode.html#Non_002dStop-Mode), которая, кажется, отвечает на мои вопрос. Cheers – sergico

+5

это нормально, чтобы опубликовать ответ на ваш вопрос. пожалуйста, сделай. –

+0

Возможный дубликат [не останавливать все потоки в gdb] (http://stackoverflow.com/questions/3666331/not-stopping-all-threads-in-gdb) –

ответ

3

Используйте эту последовательность команд перед запуском или прикрепить к программе:

  • Включите интерфейс асинхронный:
    набора целевого Асинхр 1

  • При использовании CLI разбиение на страницы разрывает нон-стоп:
    set pagination off

  • Включите его:
    набор нон-стоп на

Используйте эти команды для работы настройки режима нон-стоп:

  • Включить выбор режима нон-стоп:
    комплект нон-стоп на

  • Отключить выбор безостановочного режима:
    набор нон-стоп от

  • Показать текущий нон-стоп включен параметр:
    показать нон-стоп

Ссылки:
http://sourceware.org/gdb/onlinedocs/gdb/Non_002dStop-Mode.html#Non_002dStop-Mode

0

Вы можете использовать Totalview отладчик, чтобы сделать это

0

Если это небольшое изменение в порядке, вы можете послать потоку сигнал STOP (а не как команду gdb в gdb - это вариант) и отлаживать все остальное. Сигнал CONT позволяет продолжить поток.

Смежные вопросы