主程序 :
while(Forever) {
WaitStatus = MsgWaitForMultipleObjectsEx(
NumEvents, hEvents, INFINITE, QS_ALLINPUT, 0 );
。。
  switch (WaitStatus) {
   。
                case WAIT_OBJECT_0+1:
// Timer Event
DoTimer();
 。

BOOL DoTimer(VOID)
{
.................
     if( curtime == SysPara.StartTime ) {
// Go Man!!
DoProcessing();
}
..........
}VOID DoProcessing(VOID)
{
HANDLE hand;
DWORD ThreadId;  hand = CreateThread(NULL, 
                   0, 
                   (LPTHREAD_START_ROUTINE)ProcessThread, <----我在这里启动线程
                   NULL, 
                   0,
                   &ThreadId);
if ( hand != NULL ) CloseHandle(hand);
}DWORD WINAPI ProcessThread(LPVOID lpin)
{
// Use PeekMessage to force the Msg Queue of the thread to create
。<----------在这里设置断点,但是在跟踪(F10)时

hand = CreateThread(NULL, 
                   0, 
                   (LPTHREAD_START_ROUTINE)ProcessThread, 
                   NULL, 
                   0,
                   &ThreadId);
if ( hand != NULL ) CloseHandle(hand);程序却没有单步到线程ProcessThread中,却执行了主程序往下一步。因为主程序按时间循环所得到的条件运行的 ,所以跟踪程序。 如果我 用LOG文件来追踪程序,那么 会很慢,请问怎样跟综线程processThread呢?
请大虾帮忙啊 !!!!!!!11

解决方案 »

  1.   

    1、CreateThread  并不是call,他是让操作系统开辟内存空间,新建立一个进程,并不是调用线程,当然是不能跟踪进去的。2、在线程中设置断点
      

  2.   

    我 在 线程DWORD WINAPI ProcessThread(LPVOID lpin)
    {
     
    。<----------在这里设置断点,但是在跟踪(F10)时

    中设置了断点啊,但是他进不去啊。而是在主程序中 CreateThread后直接到了下一步啊。而没有进入线程。好烦那
      

  3.   

    我在线程中设置了断点,但是主程序在 createthread之后就进行下一步了,没有进入线程中我设置的断点啊。好奇怪。
      

  4.   

    用spy看看你的线程有没有执行
      

  5.   

    不要单步跟踪来进入线程。
    直接设置断点后,run
      

  6.   

    不要单步跟踪来进入线程。
    直接设置断点后,run
      

  7.   

    不要单步跟踪来进入线程。
    直接设置断点后,run
      

  8.   

    线程当然没有挂起,因为一直SETP 程序能够运行的,而且能够写进LOG文件中啊。怎么RUN???F5? F10 好象没有RUN 哦