Можно ли остановить один поток во время отладки в Linux?
То, что я хотел бы знать, это, если это возможно, внутри сеанса отладки в Linux (read: gdb:)), чтобы остановить выполнение одного потока, оставив другие потоки для запуска.
Если кому-то интересно узнать, зачем продолжать читать:
Я написал программный контрольный класс С++ (используя Qt). Я тестировал его с помощью простой многопоточной программы, но я бы хотел протестировать код, как только я интегрирую его в реальное приложение. Если бы я мог остановить поток от отладчика, это упростит этот этап тестирования.:)
Приветствия
Sergio
Ответы
Ответ 1
Используйте эту последовательность команд перед запуском или подключением к вашей программе:
-
Включить асинхронный интерфейс:
set target-async 1
-
При использовании CLI разбиение на страницы прерывается без остановок:
установить разбиение на страницы
-
Включить его:
установить без остановок на
Используйте эти команды для управления настройкой без остановки:
-
Включить выбор режима без остановок:
установить без остановок на
-
Отключить выбор режима без остановок:
set non-stop off
-
Показывать текущую настройку без остановки:
show non-stop
Литература:
http://sourceware.org/gdb/onlinedocs/gdb/Non_002dStop-Mode.html#Non_002dStop-Mode
Ответ 2
Вы можете использовать отладчик totalview для этого
Ответ 3
Если эта небольшая вариация в порядке, вы можете послать потоку сигнал STOP (а не как команду gdb в gdb - это вариант) и отладить все остальное. Сигнал CONT позволяет продолжить поток.