无法在sharepoint中调试自定义计时器作业

时间:2011-09-20 04:40:49

标签: visual-studio debugging sharepoint sharepoint-2007 timer-jobs

我尝试了以下步骤来调试特定的自定义计时器(已安装并激活):

  1. 复制了GAC中的.dll.pdb个文件。
  2. 重新启动计时器服务。
  3. 附加了w3wpOWSTimer.exe个进程。
  4. 但调试仍未进行。放置的调试器为空圆圈,显示以下消息:

      
        

    断点当前不会被击中。没有为此文档加载任何符号。

      

    OWSTimer以diff用户名显示。是否需要从我的帐户运行?

    为什么调试不起作用?

5 个答案:

答案 0 :(得分:11)

调试计时器工作可能很难...你采取的步骤是正确的,但你也可以做更多的事情:

  1. 计时器作业在OWSTimer.exe中运行 - 您只需要附加到那个
  2. 重新启动计时器服务。有关重新启动,部署,重新启动,iisreset; - )
  3. 的好措施
  4. 你做过DEBUG Build或RELEASE构建吗?
  5. 确保您实际 RUN 您的计时器作业(如触发它)
  6. 如果您的断点仍未被击中,请执行一些丑陋的操作:在代码中使用Debugger.Launch()Debugger.Break()或始终失败的断言:System.Diagnostics.Trace.Assert(false);

    然后有MSDN for the rescue

答案 1 :(得分:1)

尝试手动加载调试符号并查看其内容:

  

以中断模式或运行模式

显示模块窗口      

调试菜单上,选择 Windows ,然后点击模块

     

默认情况下,“模块”窗口按加载顺序对模块进行排序。然而,   您可以选择按任何列排序。

     

在“模块”窗口中,您可以查看哪些模块已进行调试   符号加载。此信息显示在“符号状态”列中。   如果状态显示已跳过加载无法找到或打开PDB文件,   或者通过包含/排除设置禁用加载,您可以指示   调试器从Microsoft公共符号服务器下载符号   或从计算机上的符号目录加载符号。更多   信息,请参见如何:使用符号服务器以及如何:指定   符号位置和加载行为。

     

手动加载符号

     

在“模块”窗口中,右键单击符号尚未显示的模块   加载。

     

指向“从中加载符号”,然后单击“Microsoft符号服务器”或   符号路径。

MSDN

复制

您也可以尝试删除Visual Studio缓存以确保(从命令提示符下):

del /Q %LOCALAPPDATA%\Microsoft\WebsiteCache
del /Q %LOCALAPPDATA%\Temp\VWDWebCache
del /Q %LOCALAPPDATA%\Microsoft\Team Foundation\1.0\Cache

答案 2 :(得分:0)

只是添加到moontear的帖子。

我有相同的加载调试符号问题,直到我将此代码添加到我的Execute方法的第一行。

    public override void Execute(Guid contentDbId)
    {
        // If in debug mode, trigger a false assertion to give time 
        // to attach the debugger to the OWSTIMER.EXE process.
        #if (DEBUG)
            System.Diagnostics.Trace.Assert(false);
        #endif
        ...

答案 3 :(得分:0)

检查以确保您的区域设置正确 - 将/_layouts/15/regionalsetng.aspx附加到CA URL。如果您的时区错误,您的工作可能会安排在过去一段时间。这让我不止一次。如果是这种情况,请设置正确的时区(使用上面的URL),停止并启动计时器服务(服务工具或打开命令行 - net stop sptimerv4然后net start sptimerv4)。然后连接到OWSTIMER并进行调试。

答案 4 :(得分:0)

  1. 在“开始”菜单上,指向“管理工具”,然后单击“服务”。
  2. 在“服务”窗口中,确保启动了SharePoint 2010 Timer服务。
  3. 打开包含计时器作业的Visual Studio 2010项目。
  4. 在作业定义类的Execute方法中设置一个断点。
  5. 在“调试”菜单上,单击“附加到进程”。
  6. 在“附加到进程”对话框中,c
  7. 如果显示“附加安全警告”对话框,请单击“附加”。
  8. 在SharePoint管理中心网站中,单击“监视”,然后单击“查看作业定义”。
  9. 单击作业的名称,然后在“编辑计时器作业”页面上单击“立即运行”。
  10. 验证Visual Studio 2010调试器在您的breakpoint.lick OWSTIMER.EXE上停止执行,然后单击“附加”。