调试资源DLL
因为群集服务是作为Windows NT服务运行的,并且资源监视器在独立的进程中运行,因此会发现调试资源DLL要比普通的Windows NT DLL或应用程序复杂。
可以使用标准的基于微软Windows系统的调试器,还有群集管理器扩展DLL “DebugEx”,来调试资源DLL。DebugEx扩展DLL允许在下一次启动资源监视器时对资源DLL进行调试(DebugExe扩展包含在产品中)。
使用WinDbg,Microsoft Developer Studios,或者其它任何基于Windows的调试器来调试资源DLL,则群集服务必须运行在与登录用户相同的安全上下文环境。(注意使用与群集服务相同的帐户登录并不意味运行在与群集服务相同的安全上下文环境。)要确保与群集服务运行于相同的安全上下文环境,必须停止群集服务,然后在命令行以-debug开关从本地启动群集服务。注意如果群集中有两个节点并且另一个节点已联机,而被调试的资源或资源类型在另一个节点上被加载,则调试器可能在该节点上被启动。
在调用调试器之前,确保将符号文件从SDK CD-ROM上的\Symbols目录拷贝到%windir%\Symbols目录。同样,确保将所有资源DLL用到.pdb文件拷贝到资源DLL所在的目录。
在调试资源DLL时,可以同时调试资源类型或属于该类型的资源两者,或两者之一。这将在下文解释。
要调试资源类型:
设置资源类型的DebugControlFunctions属性为TRUE。
设置资源类型的DebugPrefix属性为调试器的路径。
当ResourceTypeControl入口函数被调用时,群集服务会检查上述属性的设置。如果DebugControlFunction为TRUE并且DebugPrefix包含有效路径,则群集服务将为ResourceTypeControl创建一个新的资源监视器进程,并将指定的调试器贴附到该进程。
要调试资源DLL
注册DebugEx群集管理器DLL。
启动群集管理器。
创建一个新的资源DLL所支持的资源类型。指定该资源将在分离的资源监视器中运行。(在调试期间,一个专有的资源监视器,以帮助将问题隔离,并确保其它资源不会对调试进程产生影响。)
选择新资源,然后从“File”菜单选择“Properties”。
单击“Debug”页。
在调试命令前缀编辑控件中,输入调试器的完整路径,例如,使用MSDEV,则输入:
7. c:\msdev\bin\msdev.exe
单击OK。
停止群集服务,输入:
10.net stop clussvc
在群集目录下输入以下命令以本地启动群集服务:
start clussvc –debug