При выставлении отладочных регистров там есть поля global enable и local enable , я так понимаю что локально будет работать для потока, в контексте которого выставил регистры, а если сделать глобально, то на адресе будут тормозиться все потоки ? Или если это не так работает, то как мне поставить глобальный бряк на все потоки сразу без перебора всех потоков и установки в каждый отдельно контекста ? --- Сообщение объединено, 24 апр 2022 --- Поля 9-8, плюс у каждой точки останова (BP-3 - BP-0) есть старший и младший бит, которые так же соответственно называются locale и globale
Это так работать не будет. Windows (как и Linux) не использует аппаратное переключение задач: она заводит TSS не на каждый поток, а на одно ядро, а задачи переключаются софтверно. С точки зрения процессора все потоки во всех процессах, которые крутятся на одном физическом ядре - это одна задача. Если бы ты поставил глобальный брейкпоинт - у тебя бы начали останавливаться потоки в разных процессах на этом ядре, которые случайно попали бы на заданный адрес (и не важно, что по этому адресу в других процессах мог бы быть совершенно другой код или данные). Никак, только перебором, плюс отслеживать создание новых потоков и ставить брейкпоинты и для них.