Невозможно отладить пользовательское задание таймера в sharepoint - PullRequest
2 голосов
/ 20 сентября 2011

Я попытался выполнить следующие шаги для отладки определенного пользовательского таймера (установленного и активированного):

  1. Скопировал оба файла .dll и .pdb в GAC.
  2. Перезапущены службы таймера.
  3. Присоединены процессы w3wp и OWSTimer.exe.

Но отладка все еще не выполняется.Размещенный отладчик - пустой круг, который отображает это сообщение:

Точка останова в настоящее время не будет достигнута.Для этого документа не было загружено никаких символов.

OWSTimer отображается в имени пользователя diff.Нужно ли запускать его из моей учетной записи?

Почему не работает отладка?

Ответы [ 4 ]

12 голосов
/ 20 сентября 2011

Отладка заданий таймера может быть трудной ... Шаги, которые вы сделали, звучат правильно, но вы также можете сделать еще кое-что:

  1. Задания таймера выполняются в OWSTimer.exe - вам нужно только прикрепитьк этому
  2. Перезапустите службу таймера.В качестве меры предосторожности добавьте перезапуск, развертывание, перезапуск, iisreset; -)
  3. Делали ли вы сборку DEBUG или RELEASE?
  4. Убедитесь, что вы на самом деле RUN ваше задание таймера (как в триггере)

Если ваши контрольные точки все еще не достигнуты, сделайте что-нибудь некрасивое: используйте Debugger.Launch() или Debugger.Break() в своем коде или утверждение, которое всегда будет неудачным:System.Diagnostics.Trace.Assert(false);

И затем для спасения MSDN .

1 голос
/ 20 сентября 2011

Попробуйте загрузить символы отладки вручную и посмотрите, что они говорят:

Чтобы отобразить окно модулей в режиме останова или в режиме запуска

В меню Отладка выберите 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
0 голосов
/ 25 марта 2014

Проверьте правильность региональных настроек - добавьте /_layouts/15/regionalsetng.aspx к URL-адресу CA.Если у вас неправильный часовой пояс, ваша работа может быть запланирована на какое-то время в прошлом.Это повесило меня не раз.В этом случае установите правильный часовой пояс (используя указанный выше URL), остановите и запустите службу таймера (либо сервисный инструмент, либо откройте командную строку - net stop sptimerv4, затем net start sptimerv4).Затем подключите к OWSTIMER и отладьте.

0 голосов
/ 01 марта 2012

Просто добавляю в пост 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
        ...
...