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