Как использовать EnvDTE для получения текущей строки в отладчике, когда отладчик выполняет сборку?

avatar
Nicole Demera
8 августа 2021 в 21:25
54
0
0

Хорошо, у меня есть проект VSIX, в котором я пытаюсь программно управлять шагом в функцию отладки, а затем получить строку, которая будет выполняться следующей, в виде строки. Мне удалось это сделать с помощью следующего кода:

//Executes step into as though use pressed the button on the toolbar
public static void StepInto(DTE dte)
{
     ThreadHelper.ThrowIfNotOnUIThread();
     Debugger debugger = (Debugger)dte.Debugger;
     debugger.StepInto(true);
}

//Returns a string that contains the current line of code in the debugger (Doesn't work on dissasembly)
private string GetCurrentLine(DTE dte)
{
     string currentline;
     ThreadHelper.ThrowIfNotOnUIThread();

     //Throws exception here because the var activePoint is null 
     //and then when assigning currentline there is a null reference
     var activePoint = ((TextSelection)dte.ActiveDocument.Selection).ActivePoint;
     currentline = activePoint.CreateEditPoint().GetLines(activePoint.Line, activePoint.Line + 1);

     return currentline;
}

Проблема в том, что активный документ не представляет окно дизассемблирования, по крайней мере, я так думаю. Весь смысл этого проекта состоит в том, чтобы пройти через сборку, и я не могу понять, как делать то, что я хочу. Есть ли способ получить текущую строку в дизассемблере?

Источник

Ответы (0)