ClrMD - AttachToProcess с использованием AttachFlag.Invasive и AttachFlag.NonInvasive Crashing - PullRequest
0 голосов
/ 09 января 2019

Я использую пакет Microsoft.Diagnostics.Runtime nuget, и это мой код, когда я пытаюсь получить трассировку стека:

var pid = Process.GetCurrentProcess().Id;
// Line of error
using (var dataTarget = DataTarget.AttachToProcess(pid, 5000, AttachFlag.Invasive))
{
    ClrInfo currentRuntime = dataTarget.ClrVersions[0];
    var runtime = currentRuntime.CreateRuntime();
    foreach (var t in runtime.Threads)
    {
        MessageBox.Show("Got here");
        t.StackTrace
    }
}

Вопрос похож на Присоединиться к себе с помощью ClrMD? HRESULT: 0x80070057 но я иду на шаг дальше и собираю приложение, используя Wix. Затем я устанавливаю приложение на рабочий стол, чтобы оно работало без Visual Studio и его отладчика.

Окно сообщения не отображается, пока я ставлю его после строки using (var dataTarget = DataTarget.AttachToProcess(pid, 5000, AttachFlag.Invasive)). Если я поставлю окно сообщения раньше, оно появится.

В коде я получаю ошибку

Microsoft.Diagnostics.Runtime.ClrDiagnosticsException: 'Could not attach to pid 624, HRESULT: 0x80070057'

Мне кажется, я понимаю, почему AttachFlag.Invasive не работает, когда я запускаю приложение в Visual Studio, потому что оно отлаживается, но я не понимаю, почему эта строка не работает после того, как я собрал его с помощью Wix и установил его на моем рабочем столе.

Опять же, как и в случае с прикрепленным сообщением Stackoverflow, AttachFlag.Invasive и AttachFlag.NonInvasive не работают, но AttachFlag.Passive работает.

...