2008-10-23 10 views
16

Visual Studio da muchas teclas de acceso rápido de navegación: F8 para siguiente elemento de panel actual (resultados de la búsqueda, errores ...), control + K , N para marcadores, Alt + - para retroceder y más.teclas de acceso rápido para los marcos de la pila de llamadas anterior y siguiente en Visual Studio

Hay una tecla de acceso directo que no puedo encontrar, y no puedo encontrar el comando de menú para ella, así que no puedo crear la tecla de acceso.

No sé si existen: anterior y siguiente marco de pila de llamadas.

Intento no usar el mouse cuando programo, pero cuando necesito volver a la pila, debo usarla para hacer doble clic en el cuadro anterior.

¿Alguien? ¿Qué tal una macro que lo hace?

+1

OK. Puedo hacerlo sin el mouse. Lo siento. Puedo abrir la ventana de la pila, navegar con las teclas de flecha y presionar Enter en el cuadro correspondiente. Pero creo que esa no es la mejor solución. –

+0

Creo que no hay forma de lograr esto (VS 2008). – gerleim

Respuesta

-2

Mirar en Herramientas-> Opciones-> Entorno-> 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.

+0

¡Gracias por la rápida respuesta! Pero eso es exactamente lo que dije: "... ni siquiera puedo encontrar el comando de menú para ello". –

+0

@Adrian Aisemberg, creo que está respondiendo su pregunta. Creo que está diciendo que no existe una tecla de atajo. –

+1

Entonces, ¿qué tal crear uno con una macro? –

2

No creo que haya un enlace explícito de siguiente fotograma/fotograma previo, pero aquí está lo que hago.

CTRL-ALT-C ya está obligado a "Debug.CallStack" Esto le centrarse en la ventana de herramientas pila de llamadas

Una vez centrado en la ventana de pila de llamadas ... Hasta & Abajo flechas se moverán a través la pila de llamadas enmarca

entonces he obligado

CTRL-C, CTRL-S para "DebuggerContextMenus.CallStackWindow.SwitchToFrame" y CTRL-C, CTRL-C para "DebuggerContextMenus.CallStackWindow.SwitchToCode"

que le llevarán de vuelta a la ventana de código en el marco particular.

Espero que ayude.

17

escribí 2 macros de obtenerla: PreviousStackFrame y NextStackFrame y asignados atajos para

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 
+1

¡Esta macro funciona genial! Muchas gracias: D –

+0

Supongo que esto fue para VS 2008 o 2010, y no relevante para 2012 o 2013? – Noctis

3

He resuelto este problema con AutoHotkey. Hice esto hace unos meses. Suponga que desea usar Control + Control + 1 y 2 y que Control + Alt + C está destinado 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.

Cuestiones relacionadas