GDB отключить точку останова в конкретном потоке

Можно ли отключить точки останова gdb для каждого потока?

У меня есть точка останова, которая срабатывает каждые 100 миллисекунд в фоновом рабочем потоке. Но мне нужно отладить то же место в любых других потоках. Так что было бы здорово отключить точку останова только в фоновом рабочем потоке. Является ли это возможным?

Может быть, я могу отключить поток, добавив к этой точке останова какое-нибудь специально созданное условие, когда я знаю номер потока?


person igor.sol    schedule 22.06.2016    source источник


Ответы (1)


Gdb предоставляет две вспомогательные переменные $_thread и $_gthread (последняя довольно новая), которые можно использовать в условиях для ссылки на текущий поток.

Итак, как только рабочий поток запущен, вы можете использовать info thread, чтобы найти его номер. Затем вы можете изменить свою точку останова (предположим, для этого примера, что это точка останова 2), например:

(gdb) cond 2 $_thread != 57
person Tom Tromey    schedule 23.06.2016
comment
Спасибо. Это то, что я искал. - person igor.sol; 23.06.2016