我尝试了以下步骤来调试特定的自定义计时器(已安装并激活):
.dll
和.pdb
个文件。w3wp
和OWSTimer.exe
个进程。但调试仍未进行。放置的调试器为空圆圈,显示以下消息:
断点当前不会被击中。没有为此文档加载任何符号。
OWSTimer以diff用户名显示。是否需要从我的帐户运行?
为什么调试不起作用?
答案 0 :(得分:11)
调试计时器工作可能很难...你采取的步骤是正确的,但你也可以做更多的事情:
iisreset
; - )如果您的断点仍未被击中,请执行一些丑陋的操作:在代码中使用Debugger.Launch()
或Debugger.Break()
或始终失败的断言:System.Diagnostics.Trace.Assert(false);
答案 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)