19

Visual Studio には多くのナビゲーション ホットキーがあり F8ます。現在のパネルの次の項目 (検索結果、エラーなど)、 Control+ KNブックマーク、 Alt+-戻るなどです。

見つからないホットキーが 1 つあり、そのメニュー コマンドも見つからないため、自分でホットキーを作成することはできません。

そのようなものが存在するかどうかはわかりません: 前と次の呼び出しスタック フレーム。

プログラミング中はマウスを使用しないようにしていますが、スタックに戻る必要がある場合は、マウスを使用して前のフレームをダブルクリックする必要があります。

誰?それを行うマクロはどうですか?

4

5 に答える 5

19

私はそれを得るために 2 つのマクロを書きました:PreviousStackFrameNextStackFrameへのショートカットを割り当てました

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
于 2009-07-31T10:17:23.653 に答える
3

この問題はAutoHotkeyで解決しました。私はこれを数ヶ月前に作りました。Control+1 と Control+2 を使用し、Control+Alt+C が呼び出し履歴ウィンドウの表示にバインドされているとします。

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

それはかなりうまくいくようです。AutoHotkey を使用して Visual Studio に上司を表示していない場合は、試してみてください。あなたの質問は、あなたがそれから大きな恩恵を受けることを示しています。それはゲームチェンジャーです。幸運を。

于 2014-11-03T16:26:40.737 に答える
2

明示的な次のフレーム/前のフレームのキーバインディングはないと思いますが、私がしていることは次のとおりです。

CTRL-ALT-C は既に「Debug.CallStack」にバインドされています。これにより、コール スタック ツール ウィンドウにフォーカスされます。

コールスタック ウィンドウにフォーカスすると、上下の矢印でコール スタック フレームを移動できます。

私はそれからバインドしました

CTRL-C、CTRL-S を「DebuggerContextMenus.CallStackWindow.SwitchToFrame」に、CTRL-C、CTRL-C を「DebuggerContextMenus.CallStackWindow.SwitchToCode」に

どちらも、特定のフレームでコード ウィンドウに戻ります。

それが役立つことを願っています。

于 2008-10-23T17:34:00.113 に答える
-1

Tools->Options->Environment->Keyboardを見てください。「stack」または「frame」と入力すると、関連するメニューが表示されます。次と前の呼び出しスタック フレームがないようです。

于 2008-10-23T11:32:38.907 に答える