开始调试 VS 项目;附加到进程;中断代码;单步执行代码;运行到光标处;运行到调用堆栈上的函数;设置下一语句;单步执行“仅我的代码”;停止并重新开始调试;从调试的进程分离。
如果打开的解决方案是 Visual Studio,你有三种方法来开始调试:
选择“调试”、“启动调试”(键盘:F5)。 | 你的应用程序将启动然后运行,直到:
|
选择“调试”、“单步执行”(键盘:F11)或“调试”、“逐过程”(键盘:F10)。 | 你的应用程序将启动,然后在第一行中断。 |
在源窗口中,选择执行代码中的某行,然后在上下文菜单上选择“运行到光标处”。 | 你的应用程序将启动,并一直运行到断点或光标位置,具体取决于断点在前还是光标在前。 |
调试期间,若要在代码映射上对你的代码执行进行可视化跟踪,请参阅在 Visual Studio 中调试时映射调用堆栈上的方法。
调试器还可以附加到正在 Visual Studio 外的过程中运行的程序。 一旦附加到某个程序,就可以使用调试器执行命令、检查程序状态,等等。检查程序的能力可能会受到某些限制,这取决于程序是否用调试信息生成,是否可以访问程序源代码,以及公共语言运行时 JIT 编译器是否在跟踪调试信息。
附加到本地计算机上运行的进程
选择“调试”,“附加到进程”。 在“附加到进程”对话框中,从“可用进程”列表中选择进程,然后选择“附加”。

有关更多信息,请参见使用 Visual Studio 调试器附加到运行的进程。
-
Break into code by using breakpoints or Break All | Step into, over, or out of the code | Run to a specified location or function |Set the next statement to execute | Restrict stepping to Just My Code | Step into system calls | Step into properties and operators in managed code
用 VS 调试器调试应用程序时,应用程序或者正在运行(执行)或处于中断模式。
当执行到达断点或发生异常时,调试器将中断应用程序的执行。 你还可以随时手动中断执行。
断点是一个信号,它通知调试器在某个特定点上暂时将应用程序执行挂起。 当执行在某个断点处挂起时,我们称程序处于中断模式。 进入中断模式并不会停止或结束程序的执行;执行可以在任何时候继续。
大多数调试器功能(例如,在本地窗口中查看变量值,或在“监视”窗口中计算表达式)仅在中断模式下可用。 应用程序的所有元素都将保留(例如,函数、变量和对象都保留在内存中),但其移动和活动将被挂起。 在中断模式下,你可以检查元素的位置和状态,以查看是否存在冲突或 Bug。 在中断模式下,你还可以对应用程序进行调整。
你可以配置断点,挂起基于多种情况的执行。 请参阅断点:使用命中次数、调用堆栈函数和条件在 Visual Studio 调试器中您所需的时间和位置进行中断。 本节描述两种中断代码的基本方式。
在代码中设置断点
若要在代码中设置简单断点,请打开 Visual Studio 编辑器中的源文件。 设置光标要中断的代码行,然后在上下文菜单上选择“断点”、“插入断点”(键盘:F9)。 调试器将在执行该代码行之前中断执行。

Visual Studio 中的断点提供了一组丰富的附加功能,例如条件断点和跟踪点。 请参阅断点:使用命中次数、调用堆栈函数和条件在 Visual Studio 调试器中您所需的时间和位置进行中断。
手动中断代码
若要在正在执行的应用程序上,中断下一个可用的代码行,请选择“调试”、“全部中断”(键盘:Ctrl+Alt+Break)。
-
如果使用“仅我的代码”选项进行调试,则可以在项目的下一个代码行中断执行。 请参阅Restrict stepping to Just My Code。
-
如果正在调试多个程序,则默认情况下,断点或“全部中断”命令将影响所有被调试的程序。 请参阅Configure the execution behavior of multiple processes。
-
如果中断正在执行的代码,而没有响应的源或符号 (.pdf) 文件,调试器将显示“未找到源文件”或“未找到符号”页面,帮助你找到相应的文件。 请参阅在 Visual Studio 调试器中指定符号 (.pdb) 和源文件。
如果你无法访问支持文件,仍可以在“反汇编”窗口中调试汇编指令。
“单步执行”是最常见的调试过程之一。 “单步执行”即一次执行一行代码。 当你暂停执行时(例如运行调试器到断点),可以使用三个“调试”菜单命令来单步执行代码:
菜单命令 | 键盘快捷键 | 描述 |
---|---|---|
逐语句 | F11 | 如果某一行包含函数调用,“逐语句”仅执行调用本身,然后在函数内的第一个代码行处停止。 否则,请“逐语句”执行下一语句。 |
逐过程 | F10 | 如果某一行包含函数调用,则“逐过程”执行调用函数,然后在调用函数的第一个代码行处停止。 否则,请“逐语句”执行下一语句。 |
跳出 | Shift+F11 | “跳出”将一直执行代码,直到函数返回,然后在调用函数中的返回点处中断。 |
-
在嵌套函数调用上,“逐语句”将进入并单步执行嵌套最深的函数。 如果对类似 Func1(Func2()) 的调用使用“逐语句”,调试器将进入并单步执行函数 Func2。
-
实际上,调试器逐句通过代码语句,而不是物理行。 例如,if 子句可以写在一行内:
当你单步执行此行时,调试器将该条件视为一步,将结果视为另一步(在此示例中,条件为 true)。
若要在逐步执行函数的过程中,对调用堆栈进行可视化跟踪,请参阅在 Visual Studio 中调试时映射调用堆栈上的方法。
有时,你想执行到代码中的某一点,然后停止执行。 如果在想要中断的位置设置了断点,请选择“调试”、“启动调试”,如果还未启动调试,可以选择“调试”、“继续”。 (这两种情况下的快捷键都是 F5。) 执行代码时,调试器将在下一个断点停止。 选择“调试”、“继续”,直至到达所需的断点。
你还可以运行到代码编辑器中光标停放的位置,或者运行到指定的函数。
运行到光标处
若要运行到光标位置,请将光标放在源窗口中可执行的代码行上。 在编辑器的上下文菜单上,选择“运行到光标”。
在调用堆栈上运行到函数
在“调用堆栈”窗口中,选择函数,然后从上下文菜单选择“运行到光标”。 若要对调用堆栈进行可视化跟踪,请参阅在 Visual Studio 中调试时映射调用堆栈上的方法。
运行到通过名称指定的函数
可以命令调试器运行应用程序,直至到达指定的函数。 你可以通过名称指定函数,也可以从调用堆栈中选择函数。
若要通过名称指定函数,请选择“调试”、“新建断点”、“在函数处中断”,然后输入函数名称和其他标识信息。

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

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

若要设置下一个执行的语句,请使用以下过程之一:
-
在源窗口中,将黄色箭头拖动希望执行下一语句的位置,该位置应在同一源文件。
-
在源窗口中,将光标放置在希望执行的下一行上,然后在上下文菜单上选择“设置下一语句”。
-
在“反汇编”窗口中,将光标放置在希望执行的下一汇编指令上,然后在上下文菜单上选择“设置下一语句”。
![]() |
---|
设置下一条语句将导致程序计数器直接跳到新位置。 使用此命令时要小心:
|
![]() |
---|
在托管代码中,在以下情况下不能移动下一条语句:
|
应用程序处于活动运行状态时不能设置下一条语句。 要设置下一语句,调试器必须处于中断模式。
有时,你在调试过程中可能只希望查看自己编写的代码,而忽略其他代码(如系统调用)。 为此,可以使用“仅我的代码”调试。 “仅我的代码”将隐藏非用户代码,从而使这些代码不出现在调试器窗口中。 单步执行时,调试器逐句通过所有非用户代码,但不在其中停止。 请参见仅我的代码
![]() |
---|
设备项目不支持“仅我的代码”。 |
如果你已加载系统代码的调试符号,且未启用“仅我的代码”,则可以单步执行系统调用,就像可以单步执行其他任何调用一样。
要了解如何禁用“仅我的代码”,请参阅Restrict stepping to Just My Code
若要访问 Microsoft 符号文件,请参阅在 Visual Studio 调试器中指定符号 (.pdb) 和源文件主题中的Use symbol servers to find symbol files not on your local machine。
在调试时加载特定系统组件的符号:
-
打开“模块”窗口(键盘:Ctrl+Alt+U)。
-
选择要加载符号的模块。
查看“符号状态”列可以了解哪些模块加载了符号。
-
在上下文菜单中选择“加载符号”。
停止调试意味着终止调试会话。 停止执行意味着终止正调试的进程并结束调试会话。 请勿与中断执行混淆,后者意味着暂停正在调试的进程的执行但调试会话仍处于活动状态。 从进程分离将停止调试进程,但进程仍会运行。
-
Stop debugging from VS | Close the app that is being debugged | Restart debugging | Detach from the debugged app
选择“调试”、“全部分离”来停止调试,但被调试的进程仍保持运行。
![]() |
---|
请参阅使用 Visual Studio 调试器附加到运行的进程和在 Visual Studio 中调试一个或多个进程,了解有关使用 Visual Studio 附加到多个进程和控制多个进程的详细信息。 |