不知这个问题放在这里是否合适
能否在ide的调试器中实现单步跟踪?

解决方案 »

  1.   

    在InitInstance中直接调用服务的ServiceMain(NULL, 0);
    然后按F5就可以调试了
      

  2.   

    先把要实现的功能做成EXE,调试完成后, 再一次性转入SERVICE模板。因为Service里面不能弹出对话框,你也可以在Service里面要调试的地方用OutputDebugString("")输出要调试的变量的信息。OutputDebugString("")可以用DebugView(Dbgview.exe)来接收。
      

  3.   

    你可以试一下这个方法:
    1、ServiceMain函数起始处添加ASSERT(0);语句inline void CXXX::ServiceMain(DWORD /* dwArgc */, LPTSTR* /* lpszArgv */)
    {
      ASSERT(0);
      //...}
    2、编译DEBUG版本的服务程序,注册服务并启动。此时将显示Debug Assertion Failed调试信息对话框
    3、启动任务管理器,从中选择你的服务进程,右击选择调试。在弹出的警告对话框中点击“YES”按钮。此时系统将启动MSDEV.exe
    4、在Debug Assertion Failed调试信息对话框中点击“重试”按钮,执行断点将显示在 ASSERT(0);语句处。
    至此,F10、F11随便按吧。如果服务程序提供对外的接口,调试它就更容易了。(像调DLL一样,从接口函数进入即可)