2

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

  1. 复制了GAC 中的.dll.pdb文件。
  2. 重新启动计时器服务。
  3. 附上w3wpOWSTimer.exe过程。

但是调试仍然没有发生。放置的调试器是显示此消息的空圆圈:

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

OWSTimer 显示在差异用户名中。它需要从我的帐户运行吗?

为什么调试不起作用?

4

5 回答 5

12

调试计时器作业可能很难......您采取的步骤听起来很正确,但您还可以做更多:

  1. 计时器作业在 OWSTimer.exe 中运行 - 您只需附加到那个
  2. 重启定时器服务。为了更好的措施,重新启动,部署,重新启动,iisreset;-)
  3. 你做了 DEBUG Build 还是 RELEASE build?
  4. 确保您实际运行您的计时器作业(如触发它)

如果你的断点仍然没有命中,做一些丑陋的事情:在你的代码中使用Debugger.Launch()orDebugger.Break()或者一个总是失败的断言:System.Diagnostics.Trace.Assert(false);

然后是MSDN 的救援

于 2011-09-20T10:08:53.443 回答
1

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

以中断模式或运行模式显示模块窗口

在“调试”菜单上,选择“ Windows ”,然后单击“模块” 。

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

在 Modules 窗口中,您可以查看哪些模块已加载了调试符号。此信息出现在符号状态列中。如果状态显示跳过加载无法找到或打开 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
于 2011-09-20T10:31:00.833 回答
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
        ...
于 2012-02-29T22:51:58.473 回答
0

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

于 2014-03-24T20:03:52.287 回答
0
  1. 在开始菜单上,指向管理工具,然后单击服务。
  2. 在“服务”窗口中,确保 SharePoint 2010 计时器服务已启动。
  3. 打开包含您的计时器作业的 Visual Studio 2010 项目。
  4. 在作业定义类的 Execute 方法中设置断点。
  5. 在“调试”菜单上,单击“附加到进程”。
  6. 在“附加到进程”对话框中,c
  7. 如果弹出“附加安全警告”对话框,单击“附加”。
  8. 在 SharePoint 管理中心网站中,单击“监视”,然后单击“查看作业定义”。
  9. 单击您的作业名称,然后单击“编辑计时器作业”页面上的“立即运行”。
  10. 验证 Visual Studio 2010 调试器是否在您的断点上停止执行。lick OWSTIMER.EXE,然后单击附加。
于 2020-07-17T07:39:59.527 回答