HHOOK SetWindowsHookEx(
  int idHook,        // hook type
  HOOKPROC lpfn,     // hook procedure
  HINSTANCE hMod,    // handle to application instance
  DWORD dwThreadId   // thread identifier
);
dll中其他函数下断点,都能正常调试,但hook procedure不行
想知道hook procedure如何调试

解决方案 »

  1.   

    用IDE调试程序的时候,被调试的程序要能够完全被IDE控制,所以调试DLL的时候需要你指定一个应用程序exe来加载并使用DLL,这样IDE会启动一个exe进程,这样调试器就可以控制这个进程所有事件,函数调用等等。这样exe如果调用DLL里的函数就会被调试器捕获到,但是如果你使用了键盘钩子(设置了全局的钩子或者是别的进程的钩子),这样一来,触发钩子函数的就不再是被调试器控制的exe进程,而是其它进程了,这样它也就无法调试。但是如果你设置的全局键盘钩子,而且在你设置的exe应用程序里面按键,就会在钩子函数中中断。 
    自己为相对应的要查看的变量专门做一个EXE以便调试
      

  2.   

    hook procedure在其他进程里,我想也应该有方法调试,谁也不能保证程序完美
    我要问的是如何动态调试
      

  3.   

    hook procedure是什么东东?如果不能动态调试,可以输出日志调试
      

  4.   

    attach to process就可以了
      

  5.   

    不能使用IDE调试是非常常见的。
    有下面3种解决方法:
    1 WriteToFile,将调试信息写入文件,查看文件内容;
    2 OutputDebugString,使用dbgview查看;
    3 写死循环,或者在关键函数上下断点,使用windbg之类的程序调试。