在 Visual Studio 中启动、中断、单步执行、通过代码运行和停止调试

开始调试 VS 项目;附加到进程;中断代码;单步执行代码;运行到光标处;运行到调用堆栈上的函数;设置下一语句;单步执行“仅我的代码”;停止并重新开始调试;从调试的进程分离。

如果打开的解决方案是 Visual Studio,你有三种方法来开始调试:

选择“调试”“启动调试”(键盘:F5)。

你的应用程序将启动然后运行,直到:

  • 调试器到达断点。

  • “调试”菜单上选择“停止调试”

  • 将引发异常。

  • 退出应用程序。

选择“调试”“单步执行”(键盘:F11)或“调试”“逐过程”(键盘:F10)。

你的应用程序将启动,然后在第一行中断。

在源窗口中,选择执行代码中的某行,然后在上下文菜单上选择“运行到光标处”

你的应用程序将启动,并一直运行到断点或光标位置,具体取决于断点在前还是光标在前。

调试期间,若要在代码映射上对你的代码执行进行可视化跟踪,请参阅在 Visual Studio 中调试时映射调用堆栈上的方法

调试器还可以附加到正在 Visual Studio 外的过程中运行的程序。 一旦附加到某个程序,就可以使用调试器执行命令、检查程序状态,等等。检查程序的能力可能会受到某些限制,这取决于程序是否用调试信息生成,是否可以访问程序源代码,以及公共语言运行时 JIT 编译器是否在跟踪调试信息。

附加到本地计算机上运行的进程

选择“调试”“附加到进程”。 “附加到进程”对话框中,从“可用进程”列表中选择进程,然后选择“附加”

“附加到进程”对话框

有关更多信息,请参见使用 Visual Studio 调试器附加到运行的进程

用 VS 调试器调试应用程序时,应用程序或者正在运行(执行)或处于中断模式。

当执行到达断点或发生异常时,调试器将中断应用程序的执行。 你还可以随时手动中断执行。

断点是一个信号,它通知调试器在某个特定点上暂时将应用程序执行挂起。 当执行在某个断点处挂起时,我们称程序处于中断模式。 进入中断模式并不会停止或结束程序的执行;执行可以在任何时候继续。

大多数调试器功能(例如,在本地窗口中查看变量值,或在“监视”窗口中计算表达式)仅在中断模式下可用。 应用程序的所有元素都将保留(例如,函数、变量和对象都保留在内存中),但其移动和活动将被挂起。 在中断模式下,你可以检查元素的位置和状态,以查看是否存在冲突或 Bug。 在中断模式下,你还可以对应用程序进行调整。

你可以配置断点,挂起基于多种情况的执行。 请参阅断点:使用命中次数、调用堆栈函数和条件在 Visual Studio 调试器中您所需的时间和位置进行中断 本节描述两种中断代码的基本方式。

在代码中设置断点

若要在代码中设置简单断点,请打开 Visual Studio 编辑器中的源文件。 设置光标要中断的代码行,然后在上下文菜单上选择“断点”“插入断点”(键盘:F9)。 调试器将在执行该代码行之前中断执行。

设置断点

Visual Studio 中的断点提供了一组丰富的附加功能,例如条件断点和跟踪点。 请参阅断点:使用命中次数、调用堆栈函数和条件在 Visual Studio 调试器中您所需的时间和位置进行中断

手动中断代码

若要在正在执行的应用程序上,中断下一个可用的代码行,请选择“调试”“全部中断”(键盘:Ctrl+Alt+Break)。

“单步执行”是最常见的调试过程之一。 “单步执行”即一次执行一行代码。 当你暂停执行时(例如运行调试器到断点),可以使用三个“调试”菜单命令来单步执行代码:

菜单命令

键盘快捷键

描述

逐语句

F11

如果某一行包含函数调用,“逐语句”仅执行调用本身,然后在函数内的第一个代码行处停止。 否则,请“逐语句”执行下一语句。

逐过程

F10

如果某一行包含函数调用,则“逐过程”执行调用函数,然后在调用函数的第一个代码行处停止。 否则,请“逐语句”执行下一语句。

跳出

Shift+F11

“跳出”将一直执行代码,直到函数返回,然后在调用函数中的返回点处中断。

  • 在嵌套函数调用上,“逐语句”将进入并单步执行嵌套最深的函数。 如果对类似 Func1(Func2()) 的调用使用“逐语句”,调试器将进入并单步执行函数 Func2

  • 实际上,调试器逐句通过代码语句,而不是物理行。 例如,if 子句可以写在一行内:

    C#
    VB
    int x = 42;
    string s = "Not answered";
    if( int x == 42) s = "Answered!";
    

    当你单步执行此行时,调试器将该条件视为一步,将结果视为另一步(在此示例中,条件为 true)。

若要在逐步执行函数的过程中,对调用堆栈进行可视化跟踪,请参阅在 Visual Studio 中调试时映射调用堆栈上的方法

有时,你想执行到代码中的某一点,然后停止执行。 如果在想要中断的位置设置了断点,请选择“调试”“启动调试”,如果还未启动调试,可以选择“调试”“继续” (这两种情况下的快捷键都是 F5。) 执行代码时,调试器将在下一个断点停止。 选择“调试”“继续”,直至到达所需的断点。

你还可以运行到代码编辑器中光标停放的位置,或者运行到指定的函数。

运行到光标处

若要运行到光标位置,请将光标放在源窗口中可执行的代码行上。 在编辑器的上下文菜单上,选择“运行到光标”

在调用堆栈上运行到函数

“调用堆栈”窗口中,选择函数,然后从上下文菜单选择“运行到光标”。 若要对调用堆栈进行可视化跟踪,请参阅在 Visual Studio 中调试时映射调用堆栈上的方法

运行到通过名称指定的函数

可以命令调试器运行应用程序,直至到达指定的函数。 你可以通过名称指定函数,也可以从调用堆栈中选择函数。

若要通过名称指定函数,请选择“调试”“新建断点”“在函数处中断”,然后输入函数名称和其他标识信息。

“新建断点”对话框

如果是重载函数,或者函数在多个命名空间,你可以在“选择断点”对话框中选择想要的函数。

“选择断点”对话框

将调试器中断后,你可以移动执行点,设置下一个要执行的代码语句。 源窗口或“反汇编”窗口的空白区域中的黄色箭头标记要执行的下一条语句的位置。 通过移动此箭头,可以跳过部分代码或返回到以前执行过的行。 在某些情况下可以使用此方法,例如,跳过包含已知 bug 的代码段。

Example2

若要设置下一个执行的语句,请使用以下过程之一:

  • 在源窗口中,将黄色箭头拖动希望执行下一语句的位置,该位置应在同一源文件。

  • 在源窗口中,将光标放置在希望执行的下一行上,然后在上下文菜单上选择“设置下一语句”

  • 在“反汇编”窗口中,将光标放置在希望执行的下一汇编指令上,然后在上下文菜单上选择“设置下一语句”

警告说明 警告

设置下一条语句将导致程序计数器直接跳到新位置。 使用此命令时要小心:

  • 不执行旧执行点和新执行点之间的指令。

  • 如果向后移动执行点,则不撤消插入的指令。

  • 将下一条语句移动到另一个函数或范围通常会导致调用堆栈损坏,导致一个运行时错误或异常。 如果尝试将下一条语句移动到另一个范围,则调试器将打开一个含有警告的对话框,并提供一个取消该操作的机会。 在 Visual Basic 中,不能将下一条语句移动到另一个范围或函数。

  • 在本机 C++ 中,如果已启用运行时检查,设置下一条语句会导致执行到达方法的结尾时引发异常。

  • 当启用“编辑并继续”时,如果你进行了“编辑并继续”无法立即重新映射的编辑,那么“设置下一语句”将失败。 例如,如果你编辑了 catch 块中的代码,将发生这种情况。 出现这种情况时, 你将看到错误消息,告诉你操作不受支持。

说明 说明

在托管代码中,在以下情况下不能移动下一条语句:

  • 下一条语句与当前语句不在同一个方法中。

  • 使用实时调试启动调试。

  • 正在展开一个调用堆栈。

  • 已引发一个 System.StackOverflowException 或 System.Threading.ThreadAbortException 异常。

应用程序处于活动运行状态时不能设置下一条语句。 要设置下一语句,调试器必须处于中断模式。

有时,你在调试过程中可能只希望查看自己编写的代码,而忽略其他代码(如系统调用)。 为此,可以使用“仅我的代码”调试。 “仅我的代码”将隐藏非用户代码,从而使这些代码不出现在调试器窗口中。 单步执行时,调试器逐句通过所有非用户代码,但不在其中停止。 请参见仅我的代码

说明 说明

设备项目不支持“仅我的代码”。

如果你已加载系统代码的调试符号,且未启用“仅我的代码”,则可以单步执行系统调用,就像可以单步执行其他任何调用一样。

要了解如何禁用“仅我的代码”,请参阅Restrict stepping to Just My Code

若要访问 Microsoft 符号文件,请参阅在 Visual Studio 调试器中指定符号 (.pdb) 和源文件主题中的Use symbol servers to find symbol files not on your local machine

在调试时加载特定系统组件的符号:

  1. 打开“模块”窗口(键盘:Ctrl+Alt+U)。

  2. 选择要加载符号的模块。

    查看“符号状态”列可以了解哪些模块加载了符号。

  3. 在上下文菜单中选择“加载符号”

默认情况下,调试器将逐过程执行托管代码中的属性和运算符。 在多数情况下,这会提供较好的调试体验。 若要启用单步执行属性或运算符,请选择“调试”“选项和设置” “调试”“常规”页面上,清除“逐过程执行属性和运算符(仅限托管)”复选框

停止调试意味着终止调试会话。 停止执行意味着终止正调试的进程并结束调试会话。 请勿与中断执行混淆,后者意味着暂停正在调试的进程的执行但调试会话仍处于活动状态。 从进程分离将停止调试进程,但进程仍会运行。

选择“调试”“停止调试”,当程序从 Visual Studio 启动时,终止正在调试的进程。 如果程序附加到进程,而不是从 Visual Studio 启动,则该进程仍继续运行。

当你退出正在调试的应用时,调试将自动终止。

选择“调试”“重新启动”,停止当前正在调试的会话并重新启动调试器中的启动项目。

选择“调试”、“全部分离”来停止调试,但被调试的进程仍保持运行。

提示 提示

请参阅使用 Visual Studio 调试器附加到运行的进程在 Visual Studio 中调试一个或多个进程,了解有关使用 Visual Studio 附加到多个进程和控制多个进程的详细信息。

Visual Studio Code(VS Code)是一款轻量级且功能强大的代码编辑器,支持多种编程语言。如果你想要在VS Code运行代码,通常需要通过配置特定的扩展或使用内置的调试功能来实现。以下是基本步骤: 1. **选择语言和环境**:确保已安装适用于你的项目的语言和环境插件,如Node.js、Python、Java等。这些插件将提供相应的运行和调试工具。 2. **设置执行文件**:如果你的代码需要特定的可执行文件(如node_modules的`index.js`或Python脚本),确保路径正确并可以在终端访问。 3. **启动调试**:VS Code有强大的调试工具。点击左上角的"Debug"菜单,选择"添加配置",然后根据所选语言配置调试启动任务。配置可能包括程序入口点、命令行参数、断点等。 4. **启动运行**:一旦配置了调试配置,你可以通过点击调试图标(一个蓝色的小灯泡)或者快捷键F5启动代码执行。这会自动打开一个终端窗口,并按配置启动你的程序。 5. **查看输出**:程序运行时,你可以在调试面板(通常是右下角)查看输出和日志信息,这对于追踪错误很有帮助。 6. **中断单步调试**:在运行过程,你可以使用调试工具暂停代码执行,查看变量值,单步执行,以便深入分析代码。 相关问题: 1. VS Code如何配置不同的运行环境? 2. 如何在VS Code查看和设置调试配置? 3. 除了F5,还有哪些快捷键可以用于启动调试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值