2008-10-23 5 views
16

Visual Studio Hotkeys viel Navigation gibt: F8 für die nächste Element im aktuellen Feld (Suchergebnisse, Fehler ...), Steuerung + K, N für Lesezeichen, Alt + - für zurück und mehr.Hotkeys für Zurück- Call-Stack-Frames in Visual Studio

Es gibt einen Hotkey, den ich nicht finden kann, und ich kann nicht einmal den Menübefehl dafür finden, so dass ich den Hotkey nicht selbst erstellen kann.

Ich weiß nicht, ob solche existieren: Previous und Next Call-Stack-Frame.

Ich versuche nicht mit der Maus beim Programmieren, aber wenn ich den Stapel zurückgehen muss, muss ich es verwenden, um den vorherigen Frame doppelt zu klicken.

Jeder? Wie wäre es mit einem Makro, das das tut?

+1

OK. Ich kann es ohne die Maus tun. Es tut uns leid. Ich kann das Stapelfenster öffnen, mit den Pfeiltasten navigieren und im entsprechenden Rahmen die Eingabetaste drücken. Aber ich glaube, das ist nicht die beste Lösung. –

+0

Ich denke, es gibt keine Möglichkeit, dies zu erreichen (VS 2008). – gerleim

Antwort

-2

Suchen Sie in Extras-> Optionen-> Umgebung-> Tastatur. Geben Sie "stack" oder "frame" ein und die zugehörigen Menüs erscheinen. Es scheint, dass es keinen nächsten und vorherigen Call-Stack-Frame gibt.

+0

Danke für die schnelle Antwort! Aber genau das habe ich gesagt: "... kann nicht einmal den Menübefehl dafür finden." –

+0

@Adrian Aisemberg, ich denke, er beantwortet deine Frage. Ich denke, er sagt, dass es keinen solchen Tastenkürzel gibt. –

+1

Also wie wäre es mit einem Makro zu erstellen? –

2

Ich glaube nicht, dass es eine explizite Next-Frame/Prev-Frame-Tastenbindung gibt, aber was ich mache.

CTRL-ALT-C ist bereits auf „Debug.CallStack“ gebunden Dadurch werden Sie in der Call-Stack-Tool-Fenster

Einmal im Callstack Fenster ... und & Abwärtspfeile konzentriert konzentrieren Sie bewegen sich durch der Call-Stack-Frames

ich dann

CTRL-C, CTRL-S auf "DebuggerContextMenus.CallStackWindow.SwitchToFrame" und CTRL-C, STRG + C auf "DebuggerContextMenus.CallStackWindow.SwitchToCode" gebunden haben

beide werden Sie zurück in das Code-Fenster an dem bestimmten Frame führen.

Hoffe, dass hilft.

17

Ich schrieb 2 Makros es zu gewinnen: PreviousStackFrame und NextStackFrame und zugewiesen Verknüpfungen zu

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

Dieses Makro funktioniert großartig! Vielen Dank: D –

+0

Ich nehme an, dies war für VS 2008 oder 2010 und nicht relevant für 2012 oder 2013? – Noctis

3

ich dieses Problem mit AutoHotkey gelöst haben. Das habe ich vor ein paar Monaten gemacht. Angenommen, Sie Strg + 1 und Strg + 2 und Strg + Alt + C gebunden ist, zu zeigen, die Call-Stack-Fenster verwenden wollten:

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

Es scheint zu funktionieren recht gut. Wenn Sie nicht bereits AutoHotkey verwenden, um Visual Studio zu zeigen, wer der Boss ist, geben Sie es bitte an. Ihre Frage zeigt, dass Sie davon sehr profitieren würden. Es ist ein Game Changer. Viel Glück.