ClrMD на процесс другого пользователя
У меня есть приложение.Net, которое сообщает о зависаниях в журнале событий. В событиях написано "Зависание приложения" без подробностей.
Поэтому я создал консольное приложение C#, которое использует библиотеку ClrMD. Но предостережение в том, что это приложение публикуется как RemoteApp. Когда я пытаюсь присоединить ClrMD к процессу пользователя, я получаю эту ошибку: Microsoft.Diagnostics.Runtime.ClrDiagnosticsException: Не удалось подключиться к процессу. Ошибка 0
Это неудивительно, поскольку я вошел на сервер как администратор, и они находятся в своем собственном сеансе RDP с другим пользователем.
Тогда я решил выдать себя за пользователя, вошедшего в систему, и подумать, что если я запущу свое приложение ClrMD под ним, оно получит доступ к этому процессу. Это дало мне другую ошибку: Microsoft.Diagnostics.Runtime.ClrDiagnosticsException: не удалось подключиться к процессу. Ошибка 1008.
Кажется, я не могу найти никаких подсказок относительно того, что 1008 означает знать, куда идти отсюда. Я понимаю, что, вероятно, пытаюсь сделать что-то, что невозможно.
- Кто-нибудь получил ClrMD для присоединения к процессу другого пользователя?
- Если нет, существуют ли средства отладки, которые могут подключаться к процессам других пользователей?
- Если нет, используют ли люди ClrMD в производственной среде, и как я узнаю, что приложение зависло, чтобы знать, когда вызывать дамп ClrMD? Просто контролировать поток пользовательского интерфейса в другой фоновый поток?
1 ответ
Имел / имел ту же проблему. Запуск с повышенными правами администратора на сервере через консольное приложение не работал. Но он работает, если запускается через PowerShell или саму Visual Studio с повышенными разрешениями. Отладчику требуются права администратора для подключения к сети. Добавление манифеста и т. Д., Похоже, не помогло при работе в качестве консоли.