From 251fec728c2f038a26cf1769938e474c27325317 Mon Sep 17 00:00:00 2001 From: "Mike Jones (DOCS)" Date: Fri, 22 Nov 2024 15:51:56 -0800 Subject: [PATCH 01/11] Refactor breakpoints article --- docs/debugger/find-your-debugging-task.yml | 47 +----- docs/debugger/get-started-with-breakpoints.md | 158 +++++++++++++++++ docs/debugger/using-breakpoints.md | 159 +++--------------- 3 files changed, 185 insertions(+), 179 deletions(-) create mode 100644 docs/debugger/get-started-with-breakpoints.md diff --git a/docs/debugger/find-your-debugging-task.yml b/docs/debugger/find-your-debugging-task.yml index c85e21aa634..4b916416593 100644 --- a/docs/debugger/find-your-debugging-task.yml +++ b/docs/debugger/find-your-debugging-task.yml @@ -2,7 +2,7 @@ metadata: title: "FAQ - Debugger feature finder" description: Review frequently asked questions to help you identify the Visual Studio debugger feature to help you debug your application. - ms.date: "06/07/2023" + ms.date: "11/22/2024" ms.topic: faq helpviewer_keywords: - "debugging [Visual Studio], find your feature" @@ -24,50 +24,19 @@ sections: answer: | - **How do I pause running code to inspect a line of code that may contain a bug?** - Set a breakpoint. For more information, see [Using breakpoints](using-breakpoints.md). + Set a breakpoint. For more information, see [Use the right type of breakpoint](using-breakpoints.md) and [Get started with breakpoints](get-started-with-breakpoints.md). - - **Does my variable have an unexpected value. Or, do I want to inspect my app when it reaches a specific state?** - - Try a conditional breakpoint to control where and when a breakpoint gets activated by using conditional logic. Right-click on a breakpoint to add conditions. Set the condition to be true when the variable equals the unexpected value. + - **How do I pause running code based on specific critera?** - For more information, see [Breakpoint conditions](using-breakpoints.md#breakpoint-conditions). + Set the correct type of breakpoint. For more information, see [Use the right type of breakpoint](using-breakpoints.md). - **How do I log information to the Output window under configurable conditions without modifying or stopping my code?** - Tracepoints allow you to log information to the Output window under configurable conditions without modifying or stopping your code. + Tracepoints allow you to log information to the Output window under configurable conditions without modifying or stopping your code. For more information, see [Use tracepoints in the Visual Studio debugger](../debugger/using-tracepoints.md) - - **How do I know when the value of my variable changes?** - - For C++, set a [data breakpoint](using-breakpoints.md#BKMK_set_a_data_breakpoint_native_cplusplus). - ::: moniker range=">= vs-2019" - For apps using .NET Core 3, you can also set a [data breakpoint](using-breakpoints.md#BKMK_set_a_data_breakpoint_managed). - ::: moniker-end - - Otherwise, for C# and F# only, you can [track an object ID with a conditional breakpoint](using-breakpoints.md#using-object-ids-in-breakpoint-conditions-c-and-f). - - - **How do I break execution only if another breakpoint is hit?** - - Set a Dependent Breakpoint that breaks execution only if another breakpoint is first hit. For more information, see [Dependent Breakpoint](using-breakpoints.md#BKMK_set_a_dependent_breakpoint). - - - **Can I hit a breakpoint only once?** - - Set a temporary breakpoint which lets you break the code only once. For more information, see [Temporary Breakpoint](using-breakpoints.md#BKMK_set_a_temporary_breakpoint). - - - **Can I pause code inside a loop at a certain iteration?** - - Set a Dependent breakpoint that breaks execution only if another breakpoint is first hit. For more information, see [Hit count](using-breakpoints.md#set-a-hit-count-condition). - - - **How can I pause code at the start of a function when I know the function name but not its location?** - - You can do this with a function breakpoint. For more information, see [Set function breakpoints](using-breakpoints.md#BKMK_Set_a_breakpoint_in_a_source_file). - - - **How can I pause code at the start of multiple functions with the same name?** - - When you have multiple functions with the same name (overloaded functions or functions in different projects), you can use a [function breakpoint](using-breakpoints.md#BKMK_Set_a_breakpoint_in_a_source_file). - - **Manage and keep track of my breakpoints** - Use the **Breakpoints** window. For more information, see [Manage breakpoints](using-breakpoints.md#BKMK_Specify_advanced_properties_of_a_breakpoint_). + Use the **Breakpoints** window. For more information, see [Manage breakpoints](get-started-with-breakpoints.md#BKMK_Specify_advanced_properties_of_a_breakpoint_). - **Pause code and debug when a specific handled or unhandled exception is thrown** @@ -75,11 +44,11 @@ sections: - **Set a breakpoint from the call stack** - If you want to pause and debug code while examining execution flow or viewing functions in the **Call Stack** windows, see [Set a breakpoint in the Call Stack window](using-breakpoints.md#BKMK_Set_a_breakpoint_from_debugger_windows). + If you want to pause and debug code while examining execution flow or viewing functions in the **Call Stack** windows, see [Set a breakpoint in the Call Stack window](get-started-with-breakpoints.md#BKMK_Set_a_breakpoint_from_debugger_windows). - **Pause code at a specific assembly instruction** - You can do this by [setting a breakpoint from the Disassembly window](using-breakpoints.md#BKMK_Set_a_breakpoint_from_debugger_windows). + You can do this by [setting a breakpoint from the Disassembly window](get-started-with-breakpoints.md#BKMK_Set_a_breakpoint_from_debugger_windows). - question: | Navigate code diff --git a/docs/debugger/get-started-with-breakpoints.md b/docs/debugger/get-started-with-breakpoints.md new file mode 100644 index 00000000000..fe877f68844 --- /dev/null +++ b/docs/debugger/get-started-with-breakpoints.md @@ -0,0 +1,158 @@ +--- +title: Get started with breakpoints +description: Learn about breakpoints, one of the most important debugging techniques. +ms.date: 08/13/2024 +ms.topic: how-to +f1_keywords: + - vs.debug.breakpointswin + - vc.breakpoints + - vs.debug.breakpoints + - vs.debug.disassembly.insert + - vs.debug.sourcewin.edit + - vs.debug.file + - vs.debug.breakpoints.delete + - vs.debug.menu.insert + - vs.debug.filenames + - vs.debug.sourcewin.insert + - vs.debug.address +helpviewer_keywords: + - breakpoints, about breakpoints +author: mikejo5000 +ms.author: mikejo +manager: mijacobs +ms.subservice: debug-diagnostics +--- +# Use breakpoints in the Visual Studio debugger + +Breakpoints are one of the most important debugging techniques in your developer's toolbox. You set breakpoints wherever you want to pause debugger execution. For example, you may want to see the state of code variables or look at the call stack at a certain breakpoint. If you are trying to resolve a warning or issue while using breakpoints, see [Troubleshoot breakpoints in the Visual Studio debugger](../debugger/troubleshooting-breakpoints.md). + +> [!NOTE] +> If you know the task or problem you're trying to solve, but you need to know what kind of breakpoint to use, see [FAQ - Find your debugging feature](../debugger/find-your-debugging-task.yml#breakpoints). + +## Set breakpoints in source code + +You can set a breakpoint on any line of executable code. For example, in the following C# code, you could set a breakpoint on the line of code with the variable assignment (`int testInt = 1`), the `for` loop, or any code inside the `for` loop. You can't set a breakpoint on method signatures, declarations for a namespace or class, or variable declarations if there's no assignment and no getter/setter. + +To set a breakpoint in source code: + +- Click in the far left margin next to a line of code. You can also select the line and press **F9**, select **Debug** > **Toggle Breakpoint**, or right-click and select **Breakpoint** > **Insert breakpoint**. The breakpoint appears as a red dot in the left margin. + +For most languages including C#, breakpoint and current execution lines are automatically highlighted. For C++ code, you can turn on highlighting of breakpoint and current lines by selecting **Tools** (or **Debug**) > **Options** > **Debugging** > **Highlight entire source line for breakpoints and current statement (C++ only)**. + +::: moniker range=">= vs-2022" +![Set a breakpoint](../debugger/media/vs-2022/basic-breakpoint.png "Basic breakpoint") +::: moniker-end +::: moniker range="<= vs-2019" +![Set a breakpoint](../debugger/media/basicbreakpoint.png "Basic breakpoint") +::: moniker-end + +When you debug, execution pauses at the breakpoint, before the code on that line is executed. The breakpoint symbol shows a yellow arrow. + +::: moniker range=">= vs-2022" +At the breakpoint in the following example, the value of `testInt` is still 3. So, the value hasn't changed since the variable was initialized (set to a value of 3) because the statement in yellow hasn't yet executed. + +![Breakpoint execution stopped](../debugger/media/vs-2022/breakpoint-execution.png "Breakpoint execution") +::: moniker-end + +::: moniker range="<= vs-2019" +At the breakpoint in the following example, the value of `testInt` is still 1. So, the value hasn't changed since the variable was initialized (set to a value of 1) because the statement in yellow hasn't yet executed. + +![Breakpoint execution stopped](../debugger/media/breakpointexecution.png "Breakpoint execution") +::: moniker-end + +When the debugger stops at the breakpoint, you can look at the current state of the app, including [variable values](../debugger/debugger-feature-tour.md#inspect-variables-with-data-tips) and the [call stack](../debugger/how-to-use-the-call-stack-window.md). + +Here are a few general instructions for working with breakpoints. + +- The breakpoint is a toggle. You can click it, press **F9**, or use **Debug** > **Toggle Breakpoint** to delete or reinsert it. + +- To disable a breakpoint without deleting it, hover over or right-click it, and select **Disable breakpoint**. Disabled breakpoints appear as empty dots in the left margin or the **Breakpoints** window. To re-enable a breakpoint, hover over or right-click it, and select **Enable breakpoint**. + +- Set conditions and actions, add and edit labels, or export a breakpoint by right-clicking it and selecting the appropriate command, or hovering over it and selecting the **Settings** icon. + +## Manage breakpoints in the Breakpoints window + + You can use the **Breakpoints** window to see and manage all the breakpoints in your solution. This centralized location is especially helpful in a large solution, or for complex debugging scenarios where breakpoints are critical. + +In the **Breakpoints** window, you can search, sort, filter, enable/disable, or delete breakpoints. You can also set conditions and actions, or add a new function or data breakpoint. + +To open the **Breakpoints** window, select **Debug** > **Windows** > **Breakpoints**, or press **Ctrl**+**Alt**+**B**. + +::: moniker range=">= vs-2022" +![Breakpoints window](../debugger/media/vs-2022/breakpoints-window.png "Breakpoints window") +::: moniker-end +::: moniker range="<= vs-2019" +![Breakpoints window](../debugger/media/breakpointswindow.png "Breakpoints window") +::: moniker-end + +To select the columns to display in the **Breakpoints** window, select **Show Columns**. Select a column header to sort the breakpoints list by that column. + +### Breakpoint labels + +You can use labels to sort and filter the list of breakpoints in the **Breakpoints** window. + +1. To add a label to a breakpoint, right-click the breakpoint in the source code or the **Breakpoints** window, and then select **Edit labels**. Add a new label or choose an existing one, and then select **OK**. +2. Sort the breakpoint list in the **Breakpoints** window by selecting the **Labels**, **Conditions**, or other column headers. You can select the columns to display by selecting **Show Columns** in the toolbar. + +::: moniker range=">= vs-2022" +### Breakpoint groups + +For complex debugging scenarios, you may want to create breakpoint groups to organize your breakpoints. This allows you to quickly enable and disable logical groupings of breakpoints, based upon the current scenario that you're trying to debug. + +You can create breakpoints in the **Breakpoints** window by selecting **New > Breakpoint Group**, and providing a name for the group. To add a breakpoint to a group, right-click the breakpoint and choose **Add to Breakpoint Group** > **\**. Or, drag-and-drop your breakpoints into the desired group. + +![Screenshot of breakpoint groups.](../debugger/media/vs-2022/breakpoints-window-breakpoint-groups.png) + +To set a default breakpoint group, right-click a group and select **Set as default Breakpoint Group**. When you set a default breakpoint group, newly created breakpoints are automatically added to the group. + +::: moniker-end + +### Export and import breakpoints + +To save or share the state and location of your breakpoints, you can export or import them. + +::: moniker range=">= vs-2022" +Starting in Visual Studio 2022 version 17.12 Preview 3, breakpoint groups are also included with the exported and imported breakpoints. +::: moniker-end + +- To export a single breakpoint to an XML file, right-click the breakpoint in the source code or **Breakpoints** window, and select **Export** or **Export selected**. Select an export location, and then select **Save**. The default location is the solution folder. +- To export several breakpoints, in the **Breakpoints** window, select the boxes next to the breakpoints, or enter search criteria in the **Search** field. Select the **Export all breakpoints matching the current search criteria** icon, and save the file. +- To export all breakpoints, deselect all boxes and leave the **Search** field blank. Select the **Export all breakpoints matching the current search criteria** icon, and save the file. +- To import breakpoints, in the **Breakpoints** window, select the **Import breakpoints from a file** icon, navigate to the XML file location, and select **Open**. + +## Set breakpoints from debugger windows + +You can also set breakpoints from the **Call Stack** and **Disassembly** debugger windows. + +### Set a breakpoint in the Call Stack window + + To break at the instruction or line that a calling function returns to, you can set a breakpoint in the **Call Stack** window. + +**To set a breakpoint in the Call Stack window:** + +1. To open the **Call Stack** window, you must be paused during debugging. Select **Debug** > **Windows** > **Call Stack**, or press **Ctrl**+**Alt**+**C**. + +2. In the **Call Stack** window, right-click the calling function and select **Breakpoint** > **Insert Breakpoint**, or press **F9**. + + A breakpoint symbol appears next to the function call name in the left margin of the call stack. + +The call stack breakpoint appears in the **Breakpoints** window as an address, with a memory location that corresponds to the next executable instruction in the function. + +The debugger breaks at the instruction. + +For more information about the call stack, see [How to: Use the Call Stack window](../debugger/how-to-use-the-call-stack-window.md). + +To visually trace breakpoints during code execution, see [Map methods on the call stack while debugging](../debugger/map-methods-on-the-call-stack-while-debugging-in-visual-studio.md). + +### Set a breakpoint in the Disassembly window + +1. To open the **Disassembly** window, you must be paused during debugging. Select **Debug** > **Windows** > **Disassembly**, or press **Ctrl**+**Alt**+**D**. + +2. In the **Disassembly** window, click in the left margin of the instruction you want to break at. You can also select it and press **F9**, or right-click and select **Breakpoint** > **Insert Breakpoint**. + +## Related content + +- [What is debugging?](../debugger/what-is-debugging.md) +- [Write better C# code using Visual Studio](../debugger/write-better-code-with-visual-studio.md) +- [First look at debugging](../debugger/debugger-feature-tour.md) +- [Troubleshoot breakpoints in the Visual Studio debugger](../debugger/troubleshooting-breakpoints.md) diff --git a/docs/debugger/using-breakpoints.md b/docs/debugger/using-breakpoints.md index 2aad34f424e..49d1347a370 100644 --- a/docs/debugger/using-breakpoints.md +++ b/docs/debugger/using-breakpoints.md @@ -1,84 +1,43 @@ --- -title: Use breakpoints in the debugger -description: Learn about breakpoints, one of the most important debugging techniques. The article covers breakpoint actions, tracepoints, conditions, and much more. +title: Use the right type of breakpoints +description: Learn about the different types of breakpoints, one of the most important debugging techniques. The article covers breakpoint actions, tracepoints, conditions, and much more. ms.date: 08/13/2024 ms.topic: how-to f1_keywords: - - vs.debug.breakpointswin - - vs.debug.disassembly.insert - - vs.debug.sourcewin.edit - - vs.debug.file - vs.debug.breakpt.new - - vs.debug.breakpt.location.address - vs.debug.breakpt.constraints - - vs.debug.breakpoints.delete - - vs.debug.breakpt.location.data - - vc.breakpoints - vs.debug.breakpt.condition + - vs.debug.breakpt.location.file - vs.debug.breakpt.location.function - - vs.debug.breakpoints - - vs.debug.menu.insert - - vs.debug.filenames + - vs.debug.breakpt.location.address + - vs.debug.breakpt.location.data - vs.debug.breakpt.action - - vs.debug.sourcewin.insert - - vs.debug.address - vs.debug.data - vs.debug.func - - vs.debug.breakpt.location.file helpviewer_keywords: - - breakpoints, about breakpoints + - breakpoints, types of author: mikejo5000 ms.author: mikejo manager: mijacobs ms.subservice: debug-diagnostics --- -# Use breakpoints in the Visual Studio debugger +# Use the right type of breakpoint Breakpoints are one of the most important debugging techniques in your developer's toolbox. You set breakpoints wherever you want to pause debugger execution. For example, you may want to see the state of code variables or look at the call stack at a certain breakpoint. If you are trying to resolve a warning or issue while using breakpoints, see [Troubleshoot breakpoints in the Visual Studio debugger](../debugger/troubleshooting-breakpoints.md). -> [!NOTE] -> If you know the task or problem you're trying to solve, but you need to know what kind of breakpoint to use, see [FAQ - Find your debugging feature](../debugger/find-your-debugging-task.yml#breakpoints). - -## Set breakpoints in source code - -You can set a breakpoint on any line of executable code. For example, in the following C# code, you could set a breakpoint on the line of code with the variable assignment (`int testInt = 1`), the `for` loop, or any code inside the `for` loop. You can't set a breakpoint on method signatures, declarations for a namespace or class, or variable declarations if there's no assignment and no getter/setter. - -To set a breakpoint in source code: - -- Click in the far left margin next to a line of code. You can also select the line and press **F9**, select **Debug** > **Toggle Breakpoint**, or right-click and select **Breakpoint** > **Insert breakpoint**. The breakpoint appears as a red dot in the left margin. - -For most languages including C#, breakpoint and current execution lines are automatically highlighted. For C++ code, you can turn on highlighting of breakpoint and current lines by selecting **Tools** (or **Debug**) > **Options** > **Debugging** > **Highlight entire source line for breakpoints and current statement (C++ only)**. - -::: moniker range=">= vs-2022" -![Set a breakpoint](../debugger/media/vs-2022/basic-breakpoint.png "Basic breakpoint") -::: moniker-end -::: moniker range="<= vs-2019" -![Set a breakpoint](../debugger/media/basicbreakpoint.png "Basic breakpoint") -::: moniker-end - -When you debug, execution pauses at the breakpoint, before the code on that line is executed. The breakpoint symbol shows a yellow arrow. +## Scenarios -::: moniker range=">= vs-2022" -At the breakpoint in the following example, the value of `testInt` is still 3. So, the value hasn't changed since the variable was initialized (set to a value of 3) because the statement in yellow hasn't yet executed. - -![Breakpoint execution stopped](../debugger/media/vs-2022/breakpoint-execution.png "Breakpoint execution") -::: moniker-end - -::: moniker range="<= vs-2019" -At the breakpoint in the following example, the value of `testInt` is still 1. So, the value hasn't changed since the variable was initialized (set to a value of 1) because the statement in yellow hasn't yet executed. - -![Breakpoint execution stopped](../debugger/media/breakpointexecution.png "Breakpoint execution") -::: moniker-end - -When the debugger stops at the breakpoint, you can look at the current state of the app, including [variable values](../debugger/debugger-feature-tour.md#inspect-variables-with-data-tips) and the [call stack](../debugger/how-to-use-the-call-stack-window.md). - -Here are a few general instructions for working with breakpoints. - -- The breakpoint is a toggle. You can click it, press **F9**, or use **Debug** > **Toggle Breakpoint** to delete or reinsert it. - -- To disable a breakpoint without deleting it, hover over or right-click it, and select **Disable breakpoint**. Disabled breakpoints appear as empty dots in the left margin or the **Breakpoints** window. To re-enable a breakpoint, hover over or right-click it, and select **Enable breakpoint**. - -- Set conditions and actions, add and edit labels, or export a breakpoint by right-clicking it and selecting the appropriate command, or hovering over it and selecting the **Settings** icon. +| Scenario | Description | +|----------|---------==----| +| How do I pause running code to inspect a line of code that may contain a bug? | Set a breakpoint. For more information, see [Get started with breakpoints](get-started-with-breakpoints.md). | +| Does my variable have an unexpected value? Or, do I want to inspect my app when it reaches a specific state? | Try a conditional breakpoint to control where and when a breakpoint gets activated by using conditional logic. Right-click on a breakpoint to add conditions. Set the condition to be true when the variable equals the unexpected value. For more information, see [Breakpoint conditions](#breakpoint-conditions). | +| How do I log information to the Output window under configurable conditions without modifying or stopping my code? | Tracepoints allow you to log information to the Output window under configurable conditions without modifying or stopping your code. | +| How do I know when the value of my variable changes? | For C++, set a [data breakpoint](#BKMK_set_a_data_breakpoint_native_cplusplus).
For apps using .NET Core 3 and later, you can also set a [data breakpoint](#BKMK_set_a_data_breakpoint_managed).
Otherwise, for C# and F# only, you can [track an object ID with a conditional breakpoint](#using-object-ids-in-breakpoint-conditions-c-and-f). | +| How do I break execution only if another breakpoint is hit? | Set a Dependent Breakpoint that breaks execution only if another breakpoint is first hit. For more information, see [Dependent Breakpoint](#BKMK_set_a_dependent_breakpoint). | +| Can I hit a breakpoint only once? | Set a temporary breakpoint which lets you break the code only once. For more information, see [Temporary Breakpoint](#BKMK_set_a_temporary_breakpoint). | +| Can I pause code inside a loop at a certain iteration? | Set a Dependent breakpoint that breaks execution only if another breakpoint is first hit. For more information, see [Hit count](#set-a-hit-count-condition). | +| Can I pause code at the start of a function when I know the function name but not its location? | You can do this with a function breakpoint. For more information, see [Set function breakpoints](#BKMK_Set_a_breakpoint_in_a_source_file). | +| Can I pause code at the start of multiple functions with the same name? | When you have multiple functions with the same name (overloaded functions or functions in different projects), you can use a [function breakpoint](#BKMK_Set_a_breakpoint_in_a_source_file). | ## Breakpoint actions and tracepoints @@ -346,86 +305,6 @@ You can also use the right-click context menu to set the temporary breakpoint. Or, simply use the shortcut **F9 + Shift + Alt, T** and set the temporary breakpoint on line desired. ::: moniker-end -## Manage breakpoints in the Breakpoints window - - You can use the **Breakpoints** window to see and manage all the breakpoints in your solution. This centralized location is especially helpful in a large solution, or for complex debugging scenarios where breakpoints are critical. - -In the **Breakpoints** window, you can search, sort, filter, enable/disable, or delete breakpoints. You can also set conditions and actions, or add a new function or data breakpoint. - -To open the **Breakpoints** window, select **Debug** > **Windows** > **Breakpoints**, or press **Ctrl**+**Alt**+**B**. - -::: moniker range=">= vs-2022" -![Breakpoints window](../debugger/media/vs-2022/breakpoints-window.png "Breakpoints window") -::: moniker-end -::: moniker range="<= vs-2019" -![Breakpoints window](../debugger/media/breakpointswindow.png "Breakpoints window") -::: moniker-end - -To select the columns to display in the **Breakpoints** window, select **Show Columns**. Select a column header to sort the breakpoints list by that column. - -### Breakpoint labels - -You can use labels to sort and filter the list of breakpoints in the **Breakpoints** window. - -1. To add a label to a breakpoint, right-click the breakpoint in the source code or the **Breakpoints** window, and then select **Edit labels**. Add a new label or choose an existing one, and then select **OK**. -2. Sort the breakpoint list in the **Breakpoints** window by selecting the **Labels**, **Conditions**, or other column headers. You can select the columns to display by selecting **Show Columns** in the toolbar. - -::: moniker range=">= vs-2022" -### Breakpoint groups - -For complex debugging scenarios, you may want to create breakpoint groups to organize your breakpoints. This allows you to quickly enable and disable logical groupings of breakpoints, based upon the current scenario that you're trying to debug. - -You can create breakpoints in the **Breakpoints** window by selecting **New > Breakpoint Group**, and providing a name for the group. To add a breakpoint to a group, right-click the breakpoint and choose **Add to Breakpoint Group** > **\**. Or, drag-and-drop your breakpoints into the desired group. - -![Screenshot of breakpoint groups.](../debugger/media/vs-2022/breakpoints-window-breakpoint-groups.png) - -To set a default breakpoint group, right-click a group and select **Set as default Breakpoint Group**. When you set a default breakpoint group, newly created breakpoints are automatically added to the group. - -::: moniker-end - -### Export and import breakpoints - -To save or share the state and location of your breakpoints, you can export or import them. - -::: moniker range=">= vs-2022" -Starting in Visual Studio 2022 version 17.12 Preview 3, breakpoint groups are also included with the exported and imported breakpoints. -::: moniker-end - -- To export a single breakpoint to an XML file, right-click the breakpoint in the source code or **Breakpoints** window, and select **Export** or **Export selected**. Select an export location, and then select **Save**. The default location is the solution folder. -- To export several breakpoints, in the **Breakpoints** window, select the boxes next to the breakpoints, or enter search criteria in the **Search** field. Select the **Export all breakpoints matching the current search criteria** icon, and save the file. -- To export all breakpoints, deselect all boxes and leave the **Search** field blank. Select the **Export all breakpoints matching the current search criteria** icon, and save the file. -- To import breakpoints, in the **Breakpoints** window, select the **Import breakpoints from a file** icon, navigate to the XML file location, and select **Open**. - -## Set breakpoints from debugger windows - -You can also set breakpoints from the **Call Stack** and **Disassembly** debugger windows. - -### Set a breakpoint in the Call Stack window - - To break at the instruction or line that a calling function returns to, you can set a breakpoint in the **Call Stack** window. - -**To set a breakpoint in the Call Stack window:** - -1. To open the **Call Stack** window, you must be paused during debugging. Select **Debug** > **Windows** > **Call Stack**, or press **Ctrl**+**Alt**+**C**. - -2. In the **Call Stack** window, right-click the calling function and select **Breakpoint** > **Insert Breakpoint**, or press **F9**. - - A breakpoint symbol appears next to the function call name in the left margin of the call stack. - -The call stack breakpoint appears in the **Breakpoints** window as an address, with a memory location that corresponds to the next executable instruction in the function. - -The debugger breaks at the instruction. - -For more information about the call stack, see [How to: Use the Call Stack window](../debugger/how-to-use-the-call-stack-window.md). - -To visually trace breakpoints during code execution, see [Map methods on the call stack while debugging](../debugger/map-methods-on-the-call-stack-while-debugging-in-visual-studio.md). - -### Set a breakpoint in the Disassembly window - -1. To open the **Disassembly** window, you must be paused during debugging. Select **Debug** > **Windows** > **Disassembly**, or press **Ctrl**+**Alt**+**D**. - -2. In the **Disassembly** window, click in the left margin of the instruction you want to break at. You can also select it and press **F9**, or right-click and select **Breakpoint** > **Insert Breakpoint**. - ## Related content - [What is debugging?](../debugger/what-is-debugging.md) From 7371b1017d0417201f4f114827e671cedc7d72f3 Mon Sep 17 00:00:00 2001 From: "Mike Jones (DOCS)" Date: Fri, 22 Nov 2024 16:00:47 -0800 Subject: [PATCH 02/11] edits --- docs/debugger/using-breakpoints.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/debugger/using-breakpoints.md b/docs/debugger/using-breakpoints.md index 49d1347a370..ce93c9e343a 100644 --- a/docs/debugger/using-breakpoints.md +++ b/docs/debugger/using-breakpoints.md @@ -23,7 +23,7 @@ ms.subservice: debug-diagnostics --- # Use the right type of breakpoint -Breakpoints are one of the most important debugging techniques in your developer's toolbox. You set breakpoints wherever you want to pause debugger execution. For example, you may want to see the state of code variables or look at the call stack at a certain breakpoint. If you are trying to resolve a warning or issue while using breakpoints, see [Troubleshoot breakpoints in the Visual Studio debugger](../debugger/troubleshooting-breakpoints.md). +This article shows how to use different types of breakpoints in Visual Studio to improve debugging efficiency. It covers various scenarios where breakpoints can be applied, such as pausing code execution, logging information, and tracking changes in variable states. The article explains how to set conditional breakpoints, tracepoints, data breakpoints, dependent breakpoints, and temporary breakpoints. It also includes detailed instructions on setting function breakpoints. This guide is essential for developers looking to leverage breakpoints for effective debugging in Visual Studio. ## Scenarios From cb8d0beb7359b31ebdfb54eb75d9a1f2b3bc55e0 Mon Sep 17 00:00:00 2001 From: "Mike Jones (DOCS)" Date: Fri, 22 Nov 2024 16:03:05 -0800 Subject: [PATCH 03/11] fix table --- docs/debugger/toc.yml | 4 +++- docs/debugger/using-breakpoints.md | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/debugger/toc.yml b/docs/debugger/toc.yml index d376a482a5c..62b7076d4a7 100644 --- a/docs/debugger/toc.yml +++ b/docs/debugger/toc.yml @@ -40,7 +40,9 @@ items: - name: Navigation href: navigating-through-code-with-the-debugger.md - - name: Breakpoints + - name: Get started with breakpoints + href: get-started-with-breakpoints.md + - name: Using the right type of breakpoint href: using-breakpoints.md - name: Move the execution pointer href: move-the-execution-pointer-with-the-debugger.md diff --git a/docs/debugger/using-breakpoints.md b/docs/debugger/using-breakpoints.md index ce93c9e343a..b98926add3c 100644 --- a/docs/debugger/using-breakpoints.md +++ b/docs/debugger/using-breakpoints.md @@ -28,7 +28,7 @@ This article shows how to use different types of breakpoints in Visual Studio to ## Scenarios | Scenario | Description | -|----------|---------==----| +|----------|---------------| | How do I pause running code to inspect a line of code that may contain a bug? | Set a breakpoint. For more information, see [Get started with breakpoints](get-started-with-breakpoints.md). | | Does my variable have an unexpected value? Or, do I want to inspect my app when it reaches a specific state? | Try a conditional breakpoint to control where and when a breakpoint gets activated by using conditional logic. Right-click on a breakpoint to add conditions. Set the condition to be true when the variable equals the unexpected value. For more information, see [Breakpoint conditions](#breakpoint-conditions). | | How do I log information to the Output window under configurable conditions without modifying or stopping my code? | Tracepoints allow you to log information to the Output window under configurable conditions without modifying or stopping your code. | From 25d9ac63a2591a0d4bbbe71c75c19a0026069dcc Mon Sep 17 00:00:00 2001 From: "Mike Jones (DOCS)" Date: Fri, 22 Nov 2024 16:06:18 -0800 Subject: [PATCH 04/11] edit --- docs/debugger/using-breakpoints.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/debugger/using-breakpoints.md b/docs/debugger/using-breakpoints.md index b98926add3c..f361aa95a41 100644 --- a/docs/debugger/using-breakpoints.md +++ b/docs/debugger/using-breakpoints.md @@ -27,6 +27,8 @@ This article shows how to use different types of breakpoints in Visual Studio to ## Scenarios +The following table shows common debugging scenarios for breakpoints and the recommended breakpoint type for the scenario. + | Scenario | Description | |----------|---------------| | How do I pause running code to inspect a line of code that may contain a bug? | Set a breakpoint. For more information, see [Get started with breakpoints](get-started-with-breakpoints.md). | From 41d2939e35459077e08674e19ba4085792fa665a Mon Sep 17 00:00:00 2001 From: "Mike Jones (DOCS)" Date: Mon, 25 Nov 2024 09:51:00 -0800 Subject: [PATCH 05/11] edits --- docs/debugger/get-started-with-breakpoints.md | 28 +++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/docs/debugger/get-started-with-breakpoints.md b/docs/debugger/get-started-with-breakpoints.md index fe877f68844..b9c1ed68b8a 100644 --- a/docs/debugger/get-started-with-breakpoints.md +++ b/docs/debugger/get-started-with-breakpoints.md @@ -1,7 +1,7 @@ --- title: Get started with breakpoints description: Learn about breakpoints, one of the most important debugging techniques. -ms.date: 08/13/2024 +ms.date: 11/22/2024 ms.topic: how-to f1_keywords: - vs.debug.breakpointswin @@ -22,22 +22,30 @@ ms.author: mikejo manager: mijacobs ms.subservice: debug-diagnostics --- -# Use breakpoints in the Visual Studio debugger +# Get started with breakpoints in the Visual Studio debugger -Breakpoints are one of the most important debugging techniques in your developer's toolbox. You set breakpoints wherever you want to pause debugger execution. For example, you may want to see the state of code variables or look at the call stack at a certain breakpoint. If you are trying to resolve a warning or issue while using breakpoints, see [Troubleshoot breakpoints in the Visual Studio debugger](../debugger/troubleshooting-breakpoints.md). - -> [!NOTE] -> If you know the task or problem you're trying to solve, but you need to know what kind of breakpoint to use, see [FAQ - Find your debugging feature](../debugger/find-your-debugging-task.yml#breakpoints). +Breakpoints are one of the most important debugging techniques in your developer's toolbox. You set breakpoints wherever you want to pause debugger execution. For example, you may want to see the state of code variables or look at the call stack at a certain breakpoint. ## Set breakpoints in source code -You can set a breakpoint on any line of executable code. For example, in the following C# code, you could set a breakpoint on the line of code with the variable assignment (`int testInt = 1`), the `for` loop, or any code inside the `for` loop. You can't set a breakpoint on method signatures, declarations for a namespace or class, or variable declarations if there's no assignment and no getter/setter. +You can set a breakpoint on any line of executable code. For example, take a look at this simple C# code that creates a simple loop. + +```csharp +int testInt = 3; + +for (int i = 0; i < 10; i++) +{ + testInt += i; +} +``` + +You could set a breakpoint on the line of code with the variable assignment (`int testInt = 3`), the `for` loop, or any code inside the `for` loop. You can't set a breakpoint on method signatures, declarations for a namespace or class, or variable declarations if there's no assignment and no getter/setter. To set a breakpoint in source code: - Click in the far left margin next to a line of code. You can also select the line and press **F9**, select **Debug** > **Toggle Breakpoint**, or right-click and select **Breakpoint** > **Insert breakpoint**. The breakpoint appears as a red dot in the left margin. -For most languages including C#, breakpoint and current execution lines are automatically highlighted. For C++ code, you can turn on highlighting of breakpoint and current lines by selecting **Tools** (or **Debug**) > **Options** > **Debugging** > **Highlight entire source line for breakpoints and current statement (C++ only)**. +For most languages, including C#, Visual Studio automatically highlights breakpoint and current execution lines. For C++ code, you can turn on highlighting of breakpoint and current lines by selecting **Tools** (or **Debug**) > **Options** > **Debugging** > **Highlight entire source line for breakpoints and current statement (C++ only)**. ::: moniker range=">= vs-2022" ![Set a breakpoint](../debugger/media/vs-2022/basic-breakpoint.png "Basic breakpoint") @@ -70,6 +78,10 @@ Here are a few general instructions for working with breakpoints. - Set conditions and actions, add and edit labels, or export a breakpoint by right-clicking it and selecting the appropriate command, or hovering over it and selecting the **Settings** icon. +## Types of breakpoints + +Visual Studio supports different types of breakpoints to support different debugging scenarios, such as conditional breakpoints that only activate based on specified criteria. For more information, see [Use the right type of breakpoint](../debugger/using-breakpoints.md). + ## Manage breakpoints in the Breakpoints window You can use the **Breakpoints** window to see and manage all the breakpoints in your solution. This centralized location is especially helpful in a large solution, or for complex debugging scenarios where breakpoints are critical. From a41628b52273b2ccde1041bdd8923652ab93fe27 Mon Sep 17 00:00:00 2001 From: "Mike Jones (DOCS)" Date: Mon, 25 Nov 2024 10:07:02 -0800 Subject: [PATCH 06/11] Art update --- docs/debugger/get-started-with-breakpoints.md | 10 +++++++++- .../basic-breakpoint-viewing-app-state.png | Bin 0 -> 27549 bytes 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 docs/debugger/media/vs-2022/basic-breakpoint-viewing-app-state.png diff --git a/docs/debugger/get-started-with-breakpoints.md b/docs/debugger/get-started-with-breakpoints.md index b9c1ed68b8a..febd15d3d8a 100644 --- a/docs/debugger/get-started-with-breakpoints.md +++ b/docs/debugger/get-started-with-breakpoints.md @@ -45,7 +45,7 @@ To set a breakpoint in source code: - Click in the far left margin next to a line of code. You can also select the line and press **F9**, select **Debug** > **Toggle Breakpoint**, or right-click and select **Breakpoint** > **Insert breakpoint**. The breakpoint appears as a red dot in the left margin. -For most languages, including C#, Visual Studio automatically highlights breakpoint and current execution lines. For C++ code, you can turn on highlighting of breakpoint and current lines by selecting **Tools** (or **Debug**) > **Options** > **Debugging** > **Highlight entire source line for breakpoints and current statement (C++ only)**. +For most languages (including C#), Visual Studio automatically highlights breakpoint and current execution lines. For some languages, such as C++, which isn't highlighted by default, you can turn on highlighting of breakpoint and current lines by selecting **Tools** (or **Debug**) > **Options** > **Debugging** > **Highlight entire source line for breakpoints and current statement (C++ only)**. ::: moniker range=">= vs-2022" ![Set a breakpoint](../debugger/media/vs-2022/basic-breakpoint.png "Basic breakpoint") @@ -54,6 +54,8 @@ For most languages, including C#, Visual Studio automatically highlights breakpo ![Set a breakpoint](../debugger/media/basicbreakpoint.png "Basic breakpoint") ::: moniker-end +To debug, press **F5** or select **Debug** > **Start Debugging**. + When you debug, execution pauses at the breakpoint, before the code on that line is executed. The breakpoint symbol shows a yellow arrow. ::: moniker range=">= vs-2022" @@ -70,6 +72,12 @@ At the breakpoint in the following example, the value of `testInt` is still 1. S When the debugger stops at the breakpoint, you can look at the current state of the app, including [variable values](../debugger/debugger-feature-tour.md#inspect-variables-with-data-tips) and the [call stack](../debugger/how-to-use-the-call-stack-window.md). +::: moniker range=">= vs-2022" +For example, in the following illustration, you can see the value of `testInt` in a datatip and in the **Locals** window. + +![Screenshot of viewing app state](../debugger/media/vs-2022/basic-breakpoint-viewing-app-state.png) +::: moniker-end + Here are a few general instructions for working with breakpoints. - The breakpoint is a toggle. You can click it, press **F9**, or use **Debug** > **Toggle Breakpoint** to delete or reinsert it. diff --git a/docs/debugger/media/vs-2022/basic-breakpoint-viewing-app-state.png b/docs/debugger/media/vs-2022/basic-breakpoint-viewing-app-state.png new file mode 100644 index 0000000000000000000000000000000000000000..d62572529e3dcc3fad366244744f14872526fc86 GIT binary patch literal 27549 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 Date: Mon, 25 Nov 2024 10:39:09 -0800 Subject: [PATCH 07/11] edits --- docs/debugger/how-to-use-the-call-stack-window.md | 2 +- docs/debugger/using-breakpoints.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/debugger/how-to-use-the-call-stack-window.md b/docs/debugger/how-to-use-the-call-stack-window.md index 582f2f95746..5f232a14afe 100644 --- a/docs/debugger/how-to-use-the-call-stack-window.md +++ b/docs/debugger/how-to-use-the-call-stack-window.md @@ -107,7 +107,7 @@ In the **Call Stack** window, select the function, right-click, and then choose ## Set a breakpoint on the exit point of a function call -See [Set a breakpoint at a call stack function](../debugger/using-breakpoints.md#BKMK_Set_a_breakpoint_from_debugger_windows). +See [Set a breakpoint at a call stack function](../debugger/get-started-with-breakpoints.md#BKMK_Set_a_breakpoint_from_debugger_windows). ## Display calls to or from another thread diff --git a/docs/debugger/using-breakpoints.md b/docs/debugger/using-breakpoints.md index f361aa95a41..113c5c22161 100644 --- a/docs/debugger/using-breakpoints.md +++ b/docs/debugger/using-breakpoints.md @@ -33,7 +33,7 @@ The following table shows common debugging scenarios for breakpoints and the rec |----------|---------------| | How do I pause running code to inspect a line of code that may contain a bug? | Set a breakpoint. For more information, see [Get started with breakpoints](get-started-with-breakpoints.md). | | Does my variable have an unexpected value? Or, do I want to inspect my app when it reaches a specific state? | Try a conditional breakpoint to control where and when a breakpoint gets activated by using conditional logic. Right-click on a breakpoint to add conditions. Set the condition to be true when the variable equals the unexpected value. For more information, see [Breakpoint conditions](#breakpoint-conditions). | -| How do I log information to the Output window under configurable conditions without modifying or stopping my code? | Tracepoints allow you to log information to the Output window under configurable conditions without modifying or stopping your code. | +| How do I log information to the Output window under configurable conditions without modifying or stopping my code? | Tracepoints allow you to log information to the Output window under configurable conditions without modifying or stopping your code. For more information, see [Use tracepoints in the Visual Studio debugger](../debugger/using-tracepoints.md).| | How do I know when the value of my variable changes? | For C++, set a [data breakpoint](#BKMK_set_a_data_breakpoint_native_cplusplus).
For apps using .NET Core 3 and later, you can also set a [data breakpoint](#BKMK_set_a_data_breakpoint_managed).
Otherwise, for C# and F# only, you can [track an object ID with a conditional breakpoint](#using-object-ids-in-breakpoint-conditions-c-and-f). | | How do I break execution only if another breakpoint is hit? | Set a Dependent Breakpoint that breaks execution only if another breakpoint is first hit. For more information, see [Dependent Breakpoint](#BKMK_set_a_dependent_breakpoint). | | Can I hit a breakpoint only once? | Set a temporary breakpoint which lets you break the code only once. For more information, see [Temporary Breakpoint](#BKMK_set_a_temporary_breakpoint). | @@ -47,7 +47,7 @@ A *tracepoint* is a breakpoint that prints a message to the **Output** window. A ## Breakpoint conditions -You can control when and where a breakpoint executes by setting conditions. The condition can be any valid expression that the debugger recognizes. For more information about valid expressions, see [Expressions in the debugger](../debugger/expressions-in-the-debugger.md). +You can control when and where a breakpoint executes by setting conditions. The condition can be any valid expression that the debugger recognizes. (For more information about valid expressions, see [Expressions in the debugger](../debugger/expressions-in-the-debugger.md).) **To set a breakpoint condition:** From d10a11aa40402870f2a91fb976dee34f94c21a6c Mon Sep 17 00:00:00 2001 From: "Mike Jones (DOCS)" Date: Mon, 25 Nov 2024 12:04:11 -0800 Subject: [PATCH 08/11] tweaks --- docs/debugger/toc.yml | 6 +++--- .../view-data-values-in-data-tips-in-the-code-editor.md | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/debugger/toc.yml b/docs/debugger/toc.yml index 62b7076d4a7..9ba11b9f21b 100644 --- a/docs/debugger/toc.yml +++ b/docs/debugger/toc.yml @@ -42,7 +42,7 @@ href: navigating-through-code-with-the-debugger.md - name: Get started with breakpoints href: get-started-with-breakpoints.md - - name: Using the right type of breakpoint + - name: Use the right type of breakpoint href: using-breakpoints.md - name: Move the execution pointer href: move-the-execution-pointer-with-the-debugger.md @@ -58,6 +58,8 @@ href: autos-and-locals-windows.md - name: Set a watch on variables href: watch-and-quickwatch-windows.md + - name: View data values in data tips + href: view-data-values-in-data-tips-in-the-code-editor.md - name: Expressions in the debugger items: - name: Use debugger expressions @@ -70,8 +72,6 @@ href: format-specifiers-in-csharp.md - name: Pseudovariables href: pseudovariables.md - - name: View data values in DataTips - href: view-data-values-in-data-tips-in-the-code-editor.md - name: View string values in a visualizer href: view-strings-visualizer.md - name: View .NET collections in a tabular visualizer diff --git a/docs/debugger/view-data-values-in-data-tips-in-the-code-editor.md b/docs/debugger/view-data-values-in-data-tips-in-the-code-editor.md index 7e826301712..47702cf6292 100644 --- a/docs/debugger/view-data-values-in-data-tips-in-the-code-editor.md +++ b/docs/debugger/view-data-values-in-data-tips-in-the-code-editor.md @@ -20,9 +20,9 @@ ms.subservice: debug-diagnostics #customer intent: As a developer, I want to use data tips in the Visual Studio Code editor, so I can view and change variable values when I debug my code. --- -# View and change variable values with DataTips in the code editor +# View and change variable values with data tips in the code editor -This article explores how to work with the DataTips feature in Visual Studio. Data tips provide a convenient way to view information about variables in your program while you debug your code. When you set breakpoints in your code and start debugging, data tips are visible for variables as they enter the current scope of execution. You can use the data tip to change the value for a variable in scope, and rerun the code over the breakpoint to see the effect of the change. +This article explores how to work with the data tips feature in Visual Studio. Data tips provide a convenient way to view information about variables in your program while you debug your code. When you set breakpoints in your code and start debugging, data tips are visible for variables as they enter the current scope of execution. You can use the data tip to change the value for a variable in scope, and rerun the code over the breakpoint to see the effect of the change. :::image type="content" source="../debugger/media/data-tips-examples.png" border="false" alt-text="Screenshot of a debugging session in Visual Studio with examples of data tips for variables in scope." lightbox="../debugger/media/data-tips-examples.png"::: @@ -153,7 +153,7 @@ The following table summarizes how you can manually close data tips: ## Work with variables and values in data tips -When you work with DataTips in Visual Studio, you gain the ability to see details about variables and objects, and edit values during debugging. These capabilities are useful for quick troubleshooting and testing changes to your code. +When you work with data tips in Visual Studio, you gain the ability to see details about variables and objects, and edit values during debugging. These capabilities are useful for quick troubleshooting and testing changes to your code. ### Expand objects in data tips to view members @@ -177,7 +177,7 @@ To expand the view for an object in a data tip, follow these steps: ### Edit variable values -Another advantage of working with DataTips is the ability to edit the value of a variable or element in a data tip during debugging. This functionality is useful for quick testing of small changes to your code. +Another advantage of working with data tips is the ability to edit the value of a variable or element in a data tip during debugging. This functionality is useful for quick testing of small changes to your code. To edit the value of a variable or element in a data tip, follow these steps: From 869919d187cfb7e18cd36bc25e52400ec80d6440 Mon Sep 17 00:00:00 2001 From: Dennis Rea <61802807+denrea@users.noreply.github.com> Date: Mon, 25 Nov 2024 13:43:00 -0800 Subject: [PATCH 09/11] Acrolinx fix, alt text --- docs/debugger/find-your-debugging-task.yml | 2 +- docs/debugger/get-started-with-breakpoints.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/debugger/find-your-debugging-task.yml b/docs/debugger/find-your-debugging-task.yml index 4b916416593..efc98499131 100644 --- a/docs/debugger/find-your-debugging-task.yml +++ b/docs/debugger/find-your-debugging-task.yml @@ -26,7 +26,7 @@ sections: Set a breakpoint. For more information, see [Use the right type of breakpoint](using-breakpoints.md) and [Get started with breakpoints](get-started-with-breakpoints.md). - - **How do I pause running code based on specific critera?** + - **How do I pause running code based on specific criteria?** Set the correct type of breakpoint. For more information, see [Use the right type of breakpoint](using-breakpoints.md). diff --git a/docs/debugger/get-started-with-breakpoints.md b/docs/debugger/get-started-with-breakpoints.md index febd15d3d8a..4c9254785cc 100644 --- a/docs/debugger/get-started-with-breakpoints.md +++ b/docs/debugger/get-started-with-breakpoints.md @@ -75,7 +75,7 @@ When the debugger stops at the breakpoint, you can look at the current state of ::: moniker range=">= vs-2022" For example, in the following illustration, you can see the value of `testInt` in a datatip and in the **Locals** window. -![Screenshot of viewing app state](../debugger/media/vs-2022/basic-breakpoint-viewing-app-state.png) +![Screenshot of viewing app state.](../debugger/media/vs-2022/basic-breakpoint-viewing-app-state.png) ::: moniker-end Here are a few general instructions for working with breakpoints. From 7a5b0b005b5d37addcf7b1882c6321c961b75a0a Mon Sep 17 00:00:00 2001 From: "Mike Jones (DOCS)" Date: Tue, 26 Nov 2024 15:46:50 -0800 Subject: [PATCH 10/11] Add link to breakpoints article --- docs/debugger/using-breakpoints.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/debugger/using-breakpoints.md b/docs/debugger/using-breakpoints.md index 113c5c22161..ae63316f7ae 100644 --- a/docs/debugger/using-breakpoints.md +++ b/docs/debugger/using-breakpoints.md @@ -25,6 +25,8 @@ ms.subservice: debug-diagnostics This article shows how to use different types of breakpoints in Visual Studio to improve debugging efficiency. It covers various scenarios where breakpoints can be applied, such as pausing code execution, logging information, and tracking changes in variable states. The article explains how to set conditional breakpoints, tracepoints, data breakpoints, dependent breakpoints, and temporary breakpoints. It also includes detailed instructions on setting function breakpoints. This guide is essential for developers looking to leverage breakpoints for effective debugging in Visual Studio. +If you're unfamiliar with using breakpoints in Visual Studio, see [Get started with breakpoints](get-started-with-breakpoints.md) before going through this article. + ## Scenarios The following table shows common debugging scenarios for breakpoints and the recommended breakpoint type for the scenario. From fde6d1bf9eb684b69a042421308a89c37158e688 Mon Sep 17 00:00:00 2001 From: "Mike Jones (DOCS)" Date: Tue, 26 Nov 2024 15:52:14 -0800 Subject: [PATCH 11/11] F1 keyword edit --- docs/debugger/using-breakpoints.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/debugger/using-breakpoints.md b/docs/debugger/using-breakpoints.md index ae63316f7ae..d54e3e09d2b 100644 --- a/docs/debugger/using-breakpoints.md +++ b/docs/debugger/using-breakpoints.md @@ -5,6 +5,7 @@ ms.date: 08/13/2024 ms.topic: how-to f1_keywords: - vs.debug.breakpt.new + - vs.debug.breakpoints - vs.debug.breakpt.constraints - vs.debug.breakpt.condition - vs.debug.breakpt.location.file