2008-10-23 6 views
16

Visual Studio donne de nombreux raccourcis clavier de navigation: F8 pour l'article suivant dans le panneau en cours (résultats de la recherche, des erreurs ...), contrôle + K, N pour les signets, Alt + - pour retourner et plus.raccourcis clavier pour les cadres de la pile d'appel précédent et suivant dans Visual Studio

Il y a une touche de raccourci que je ne trouve pas, et je ne trouve même pas la commande de menu, donc je ne peux pas créer la touche de raccourci moi-même.

Je ne sais pas s'il en existe: Cadre de pile d'appels précédent et suivant.

J'essaie de ne pas utiliser la souris lors de la programmation, mais quand j'ai besoin de retourner la pile, je dois l'utiliser pour double-cliquer sur l'image précédente.

Quelqu'un? Que diriez-vous d'une macro qui le fait?

+1

OK. Je peux le faire sans la souris. Pardon. Je peux ouvrir la fenêtre de la pile, naviguer avec les touches fléchées et appuyer sur la touche Entrée dans l'image correspondante. Mais je crois que ce n'est pas la meilleure solution. –

+0

Je pense qu'il n'y a aucun moyen d'accomplir cela (VS 2008). – gerleim

Répondre

-2

Regardez dans Outils-> Options-> Environnement-> Clavier. Entrez "pile" ou "cadre" et les menus apparentés apparaîtront. Il semble qu'il n'y ait pas de trame de pile d'appels suivante et précédente.

+0

Merci pour la réponse rapide! Mais c'est exactement ce que j'ai dit: "... je ne trouve même pas la commande de menu pour ça." –

+0

@Adrian Aisemberg, je pense qu'il répond à votre question. Je pense qu'il dit qu'il n'y a pas de telle touche de raccourci. –

+1

Alors, que diriez-vous de créer un avec une macro? –

2

Je ne pense pas qu'il existe une liaison explicite entre les touches frame/prev-frame, mais c'est ce que je fais.

CTRL-ALT-C est déjà lié à « Debug.CallStack » Cela vous concentrer dans la fenêtre Stack Appel d'outil

Une fois concentré dans la fenêtre Callstack ... Up & flèches vers le bas vous déplacer à travers la pile d'appels cadres

J'ai alors lié

CTRL-C, CTRL-S "DebuggerContextMenus.CallStackWindow.SwitchToFrame" et CTRL-C, CTRL-C "DebuggerContextMenus.CallStackWindow.SwitchToCode"

qui vous ramèneront dans la fenêtre de code à l'image particulière.

Espérons que ça aide.

17

j'ai écrit 2 macros pour la gagner: PreviousStackFrame et NextStackFrame et assignés à des raccourcis

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

Cette macro fonctionne très bien! Merci beaucoup: D –

+0

Je suppose que c'était pour VS 2008 ou 2010, et non pour 2012 ou 2013? – Noctis

3

J'ai résolu ce problème avec AutoHotkey. Je l'ai fait il y a quelques mois. Supposons que vous vouliez utiliser Ctrl + 1 et le contrôle + 2 et que Ctrl + Alt + C est lié à afficher la fenêtre Call Stack:

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

Il semble fonctionner assez bien. Si vous n'utilisez pas AutoHotkey pour montrer à Visual Studio qui est le patron, s'il vous plaît essayer. Votre question indique que vous en bénéficieriez grandement. C'est un changeur de jeu. Bonne chance.

Questions connexes