Горячие клавиши для кадров стека предыдущего и следующего стека в Visual Studio

Visual Studio предоставляет множество горячих клавиш навигации: F8 для следующего элемента в текущей панели (результаты поиска, ошибки...), Control + K, N для закладок, Alt- для возврата и более.

Есть одна горячая клавиша, которую я не могу найти, и я даже не могу найти команду меню для нее, поэтому я не могу сам создать горячую клавишу.

Я не знаю, существуют ли такие:

Предыдущий и следующий фрейм стека вызовов. Я пытаюсь не использовать мышь при программировании, но когда мне нужно вернуться в стек, я должен использовать его, чтобы дважды щелкнуть предыдущий кадр.

Кто-нибудь? Как насчет макроса, который делает это?

Спасибо.

Ответы

Ответ 1

Я написал 2 макроса, чтобы получить его: PreviousStackFrame и NextStackFrame и назначил ярлыки для

Function StackFrameIndex(ByRef aFrames As EnvDTE.StackFrames, ByRef aFrame As EnvDTE.StackFrame) As Long
    For StackFrameIndex = 1 To aFrames.Count
        If aFrames.Item(StackFrameIndex) Is aFrame Then Exit Function
    Next
    StackFrameIndex = -1
End Function

Sub NavigateStack(ByVal aShift As Long)
    If DTE.Debugger.CurrentProgram Is Nothing Then
        DTE.StatusBar.Text = "No program is currently being debugged."
        Exit Sub
    End If

    Dim ind As Long = StackFrameIndex(DTE.Debugger.CurrentThread.StackFrames, DTE.Debugger.CurrentStackFrame)
    If ind = -1 Then
        DTE.StatusBar.Text = "Stack navigation failed"
        Exit Sub
    End If

    ind = ind + aShift
    If ind <= 0 Or ind > DTE.Debugger.CurrentThread.StackFrames.Count Then
        DTE.StatusBar.Text = "Stack frame index is out of range"
        Exit Sub
    End If

    DTE.Debugger.CurrentStackFrame = DTE.Debugger.CurrentThread.StackFrames.Item(ind)
    DTE.StatusBar.Text = "Stack frame index: " & ind & " of " & DTE.Debugger.CurrentThread.StackFrames.Count
End Sub

Sub PreviousStackFrame()
    NavigateStack(1)
End Sub

Sub NextStackFrame()
    NavigateStack(-1)
End Sub

Ответ 2

Я решил эту проблему с AutoHotkey. Я сделал это несколько месяцев назад. Предположим, вы хотели использовать Control + 1 и Control + 2 и что Control + Alt + C привязан к отображению окна "Стек вызовов":

^1::SendInput !^c{down}{enter}
^2::SendInput !^c{up}{enter}

Кажется, он работает очень хорошо. Если вы еще не используете AutoHotkey, чтобы показать Visual Studio, кто босс, пожалуйста, сделайте снимок. Ваш вопрос указывает на то, что вы очень выиграете от этого. Это игровой чейнджер. Удачи.

Ответ 3

Я не думаю, что это выражение, связанное с привязкой к следующему кадру/предыдущему кадру, но это то, что я делаю.

CTRL-ALT-C уже привязан к "Debug.CallStack" Это сфокусирует вас в окне окна стека вызовов.

После фокусировки в окне Callstack... Стрелки вверх и вниз переместит вас через кадры стека вызовов

Затем я привязал

CTRL-C, CTRL-S в "DebuggerContextMenus.CallStackWindow.SwitchToFrame" а также CTRL-C, CTRL-C в "DebuggerContextMenus.CallStackWindow.SwitchToCode"

оба из них вернут вас в окно кода в конкретном фрейме.

Надеюсь, что это поможет.

Ответ 4

Посмотрите Инструменты- > Параметры- > Среда- > Клавиатура. Введите "стек" или "кадр", и появятся соответствующие меню. Кажется, что нет следующего и предыдущего кадра стоп-кадра.