2008-10-23 8 views
16

Visual Studio daje wiele skrótów klawiszowych Nawigacja: F8 dla następnego elementu w bieżącym panelu (wyników wyszukiwania, błędy ...), Kontrola + K, N do zakładek, Alt + - za powrót i więcej.Hotkeys do poprzedniej i następnej ramki stosu wywołań w Visual Studio

Istnieje jeden skrót, którego nie mogę znaleźć, i nie mogę nawet znaleźć dla niego polecenia menu, więc nie mogę sam utworzyć skrótu.

Nie wiem, czy takie istnieją: poprzednia i następna ramka stosu wywołań.

Próbuję nie używać myszy podczas programowania, ale kiedy potrzebuję wrócić do stosu, muszę go użyć, aby dwukrotnie kliknąć poprzednią klatkę.

Ktoś? A co z makrem, który to robi?

+1

OK. Mogę to zrobić bez myszy. Przepraszam. Mogę otworzyć okno stosu, nawigować za pomocą klawiszy strzałek i nacisnąć klawisz Enter w odpowiedniej ramce. Uważam jednak, że nie jest to najlepsze rozwiązanie. –

+0

Myślę, że nie ma sposobu, aby to osiągnąć (VS 2008). – gerleim

Odpowiedz

-2

Szukaj w Narzędzia-> Opcje-> Środowisko-> Klawiatura. Wprowadź "stos" lub "ramkę" i pojawi się powiązane menu. Wygląda na to, że nie ma następnej ani poprzedniej klatki stosu wywołań.

+0

Dzięki za szybką odpowiedź! Ale to jest dokładnie to, co powiedziałem: "... nie można nawet znaleźć polecenia menu dla niego." –

+0

@Adrian Aisemberg, myślę, że odpowiada na twoje pytanie. Myślę, że mówi, że nie ma takiego skrótu klawiszowego. –

+1

A co z tworzeniem jednego z makrem? –

2

Nie sądzę, że jest to wiążący klucz do następnej klatki/klatki poprzedniej klatki, ale jest to, co robię.

CTRL-ALT-C jest już związany z „Debug.CallStack” Pozwoli to skupić cię w oknie wywołanie narzędzia Stos

Po koncentruje się w oknie callstack ... Up & strzałki w dół przeniesie Cię przez wywołanie stosu klatek

ja czym związany

Ctrl-C Ctrl-S "DebuggerContextMenus.CallStackWindow.SwitchToFrame" i Ctrl-C Ctrl-C "DebuggerContextMenus.CallStackWindow.SwitchToCode"

oba te elementy spowodują powrót do okna kodu w określonej ramce.

Nadzieję, że pomaga.

17

pisałem 2 makra, aby je zdobyć: PreviousStackFrame i NextStackFrame i przypisane skróty do

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

To makro działa świetnie! Wielkie dzięki: D –

+0

Zakładam, że było to dla VS 2008 lub 2010 i nie dotyczy 2012 lub 2013? – Noctis

3

Mam rozwiązać ten problem z AutoHotkey. Zrobiłem to kilka miesięcy temu. Załóżmy, że chciał użyć Control + 1 i Control + 2 i Control + Alt + C jest związany pokazując okno stosu wywołań:

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

Wydaje się całkiem dobrze. Jeśli nie używasz AutoHotkey do pokazania, kto jest szefem Visual Studio, daj mu szansę. Twoje pytanie wskazuje, że możesz odnieść z tego dużą korzyść. To zmieniacz gry. Powodzenia.

Powiązane problemy