DR-отладочные регистры locale\globаle

Тема в разделе "WASM.BEGINNERS", создана пользователем Flaer, 24 апр 2022.

  1. Flaer

    Flaer Member

    Публикаций:
    0
    Регистрация:
    10 дек 2019
    Сообщения:
    32
    При выставлении отладочных регистров там есть поля global enable и local enable , я так понимаю что локально будет работать для потока, в контексте которого выставил регистры, а если сделать глобально, то на адресе будут тормозиться все потоки ? Или если это не так работает, то как мне поставить глобальный бряк на все потоки сразу без перебора всех потоков и установки в каждый отдельно контекста ?
    --- Сообщение объединено, 24 апр 2022 ---
    [​IMG]
    Поля 9-8, плюс у каждой точки останова (BP-3 - BP-0) есть старший и младший бит, которые так же соответственно называются locale и globale
     
    Последнее редактирование: 24 апр 2022
  2. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.422
    Адрес:
    Россия, Нижний Новгород
    Это так работать не будет. Windows (как и Linux) не использует аппаратное переключение задач: она заводит TSS не на каждый поток, а на одно ядро, а задачи переключаются софтверно.
    С точки зрения процессора все потоки во всех процессах, которые крутятся на одном физическом ядре - это одна задача.
    Если бы ты поставил глобальный брейкпоинт - у тебя бы начали останавливаться потоки в разных процессах на этом ядре, которые случайно попали бы на заданный адрес (и не важно, что по этому адресу в других процессах мог бы быть совершенно другой код или данные).
    Никак, только перебором, плюс отслеживать создание новых потоков и ставить брейкпоинты и для них.
     
    Mikl___ нравится это.