Как открыть поток, зная его ID (номер) в отладчике?

Тема в разделе "WASM.BEGINNERS", создана пользователем AndreyMust19, 30 янв 2009.

  1. stellaco

    stellaco New Member

    Публикаций:
    0
    Регистрация:
    11 дек 2008
    Сообщения:
    193
    AndreyMust19
    Спасибо =)

    И у меня ещё один вопрос , не знаю правда, на сколько его можно отнести к вопросам по поводу отладчика..но всёже..
    Когда смотрю код некой программы . То в коде данных по адресу к примеру 006602b0 расположено ff ff 26 ff 25 00 a0 и тд..
    и по адресу 006602с0 5d 00 2d 00 и тд...

    Как в собственной программе, которую пишу, указать ассемблеру, чтоб располагал, заведомо известные данные... именно на таких адресах. ???????????
     
  2. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    stelacco, Я - не понял.
     
  3. bolkin

    bolkin New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    34
    Адрес:
    Israel
    Конечная позиция данных/кода в бинарнике задается линкером. В микрософтовском линкере есть опция /BASE, но она задает базовый адрес модуля а не отдельной функции.
    У программы по уолчанию она 0x400000.
     
  4. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    leo писал:
    Я проверил это, и оказалось, что в lpThreadLocalBase передается TIB, а не TEB!
    Код (Text):
    1. typedef struct _NT_TIB {
    2.     struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList;
    3.     PVOID StackBase;
    4.     PVOID StackLimit;
    5.     PVOID SubSystemTib;
    6.     union {
    7.         PVOID FiberData;
    8.         DWORD Version;
    9.     };
    10.     PVOID ArbitraryUserPointer;
    11.     struct _NT_TIB *Self;
    12. } NT_TIB;
    А там, как видишь, никакого ThreadID нету. Ну и откуда я его тогда возьму?
     
  5. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    И еще. При отладке после загрузки некоторых библиотек возникает BREAKPIONT. Но не на точке входа, а где-то внутри библиотеки. Зачем это?
    Также рано или поздно возникает Exception с кодом где-то 0x6AB. Такого кода в Winnt.h нету, но если продолжить отладку с флагом DBG_EXCEPTION_NOT_HANDLED (т. е. позволить отлаживаемому процессу обработать исключение самостоятельно), его выполнение продолжится). Почему и откуда берется этот Exception?

    Добавлено:
    И как все-таки узнать ID-номер созданного потока? Неужели придется об этом спрашивать операционную систему?