microsoft - Teclas de acceso rápido para marcos de pila de llamadas anteriores y siguientes en Visual Studio
visual studio installer (4)
Mire en Herramientas-> Opciones-> Ambiente-> Teclado . Ingrese "stack" o "frame" y aparecerán los menús relacionados. Parece que no hay un marco de pila de llamadas siguiente y anterior.
Visual Studio ofrece muchas teclas rápidas de navegación: F8 para el siguiente elemento en el panel actual (resultados de búsqueda, errores ...), Control + K, N para marcadores, Alt- para retroceder y más.
Hay una tecla de acceso directo que no puedo encontrar, y ni siquiera puedo encontrar el comando de menú, así que no puedo crear la tecla de acceso rápido yo mismo.
No sé si existen tales:
Marco de pila de llamadas anterior y siguiente. Intento no usar el mouse cuando programo, pero cuando necesito volver a la pila, debo usarla para hacer doble clic en el cuadro anterior.
¿Nadie? ¿Qué tal una macro que lo hace?
Gracias.
No creo que haya un enlace explícito de siguiente fotograma / fotograma anterior, pero aquí está lo que hago.
CTRL-ALT-C ya está vinculado a "Debug.CallStack" Esto lo enfocará en la ventana de la herramienta Call Stack
Una vez que esté enfocado en la ventana Callstack ... las flechas hacia arriba y hacia abajo lo moverán a través de los marcos de la pila de llamadas
Entonces he atado
CTRL-C, CTRL-S a "DebuggerContextMenus.CallStackWindow.SwitchToFrame" y CTRL-C, CTRL-C a "DebuggerContextMenus.CallStackWindow.SwitchToCode"
ambos lo llevarán de vuelta a la ventana de código en el marco particular.
Espero que ayude.
He resuelto este problema con AutoHotkey . Hice esto hace unos meses. Supongamos que quiere usar Control + 1 y Control + 2 y que Control + Alt + C está obligado a mostrar la ventana Pila de llamadas:
^1::SendInput !^c{down}{enter}
^2::SendInput !^c{up}{enter}
Parece que funciona bastante bien. Si aún no está utilizando AutoHotkey para mostrarle a Visual Studio quién es el jefe, por favor, pruébelo. Su pregunta indica que se beneficiaría enormemente de ella. Es un cambio de juego. Buena suerte.
Escribí 2 macros para obtenerlo: PreviousStackFrame
y NextStackFrame
y atajos asignados a
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