Сейчас на форуме: (+6 невидимых)

 eXeL@B —› Вопросы новичков —› Потоки.
Посл.ответ Сообщение

Ранг: 87.8 (постоянный), 10thx
Активность: 0.070
Статус: Участник

Создано: 12 августа 2010 19:59
· Личное сообщение · #1

Имеем следующее:

Code:
  1. 0054A85F  |.  8D87 0>LEA EAX,DWORD PTR DS:[EDI+20C]
  2. 0054A865  |.  51     PUSH ECX                            ; /pThreadId
  3. 0054A866  |.  6A 00  PUSH 0                              ; |CreationFlags = 0
  4. 0054A868  |.  50     PUSH EAX                            ; |pThreadParm
  5. 0054A869  |.  68 902>PUSH Konverto.00542890       ; |ThreadFunction = Konverto.00542890
  6. 0054A86E  |.  6A 00  PUSH 0                              ; |StackSize = 0
  7. 0054A870  |.  6A 00  PUSH 0                              ; |pSecurity = NULL
  8. 0054A872  |.  FF15 5>CALL DWORD PTR DS:[<&kernel32.Creat>; \CreateThread
  9. 0054A878  |.  8D87 4>LEA EAX,DWORD PTR DS:[EDI+2348]     ; сюда ставлю бряк
  10. 0054A87E  |.  53     PUSH EBX
  11. 0054A87F  |.  68 000>PUSH 100

При установке бряков по адресам 0054A878 и 00542890 программа останавливается на 0054A878 при этом в окне потоков вижу один поток.
При утановке bp CreateThread а затем на 00542890 - брякаюсь по этому адресу, в окне потоков при этом вижу два потока.

Вопрос: поскольку потоки выполнятся одновременно не могут (хотя бы и за наличия у меня одного ядра процессора) в какой последовательности перехватывать эти потоки и в каком порядке они будут выполнятся в программе?

-----
Надежда - есть худшее из зол, ибо она продлевает наши страдания.© Ф. Ницше





Ранг: 355.4 (мудрец), 55thx
Активность: 0.320
Статус: Uploader
5KRT

Создано: 12 августа 2010 20:44
· Личное сообщение · #2

Что бы поймать выполнение потока нужно ставить бряк на адрес ThreadFunction, как ты и делаешь

Вопрос: поскольку потоки выполнятся одновременно не могут (хотя бы и за наличия у меня одного ядра процессора) в какой последовательности перехватывать эти потоки и в каком порядке они будут выполнятся в программе?

Дело не в одноядерном процессоре, потоки можно создавать сколько угодно

www.firststeps.ru/mfc/winapi/r.php?125

-----
Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes




Ранг: 255.8 (наставник), 19thx
Активность: 0.150.01
Статус: Участник
vx

Создано: 12 августа 2010 23:09
· Личное сообщение · #3

Отладчик получает уведамление когда поток начнёт исполняться(DbgkCreateThread()). Тогда отладчик добавит его в список.


 eXeL@B —› Вопросы новичков —› Потоки.
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати