浅析Visual Studio调试中断点的设置

开发 后端
这里我们将介绍的是Visual Studio调试中断点的设置,希望能对大家了解Visual Studio下的调试工作有所帮助。

本文将讲解ViVisual Studio调试中断点的设置,首先我们会来讲解调试的定义,以及调试的重要性。对于断点,我们也会从CPU的构架开始讲解。51CTO编辑推荐《Visual Studio 2010应用与开发详解

我曾经问过很多人,你一般是怎么调试你的程序的?

F9, F5, F11, F……

有很多书和文章都是介绍怎么使用Visual Studio编写WinForm,ASP.NET之类的程序;知道如何编写固然重要,但是我觉得程序员可能只会花费30%的时间在编写代码上,剩下的大部分时间都是在调试程序。在网上看到很多人介绍Windbg的用法,但是没有看到几篇讲解使用Visual Studio调试的文章。Windbg固然强大,但是问题是它的学习曲线太陡了,而且很多调试并不需要使用Windbg来调试(当然啦,并不是指我不会Windbg调试啦这是以后的调试系列文章将要讲的),为什么不使用我们最熟悉的Visual Studio来进行调试呢?

调试嘛,无非就是要看看程序在运行时候,内部的状态,例如一些变量的值是多少,看一看程序调用的路径啦之类的。当然最直接的方式就是直接中断程序的执行,用调试器去检查一下程序的情况嘛。于是F9, F5, F10, F11……

那么我们就来说说什么是断点,断点是什么?

不是F9 ,也不是那个小红球,在Intel系列的CPU(包括AMD生产的CPU)里面,它其实是一个特殊的指令—INT 3CPU在执行程序的指令集的时候,只要碰到这个指令,就会中断程序的执行(当然啦,CPU会通知操作系统,然后……然后……然后……,断点的实现机制我会在以后的文章里面讲解,现在我们就只要知道那个INT 3指令会中断程序的执行好吗?)。

当然啦,我们需要用事实来证明我上面的话,因此把下面的程序编译并且执行一下,点“Yes”,点“Break”,对对对,程序中断了,我相信你可以看见的:

  1. #include   
  2. void main()  
  3. {  
  4.        printf("Before breakpoint"n");  
  5.        __asm  
  6.        {  
  7.               int 3  
  8.        }  
  9.        printf("Before breakpoint"n");  

编译方法:

1.       在开始菜单中打开Visual Studio 2008[2005] Command PromptVisual Studio 2008[2005]命令行)。

2.       进入保存上面 C源代码(int3.c)的文件夹的路径。

3.       执行编译命令(因为我的机器是Windows 7 RC + Visual Studio 2008 + x64 CPU,直接编译有一点问题,如果你的机器不是我上面的配置,可以尝试执行cl /Zi int3.c

  1. cl /Zi /c int3.c 

4.       执行链接命令(如果你直接执行了命令cl /Zi int3.c的话就可以跳过这一步)。

  1. link /libpath:"C:"Program Files"Microsoft SDKs"Windows"v6.0A"Lib" int3.obj 

5.       运行输出的int3.exe

这时你应该会看到Visual Studio弹出来,然后在源代码行的int 3上面中断,说明我们已经成功地让CPU中断int3.exe程序 的执行了。

提示:如果你执行int3.exe的时候,没有发现Visual Studio窗口弹出来的话,那么请点击Visual Studio菜单项里面的“Tools(工具)”Options(选项)”,接着在“Options(选项)”窗口中选择 Debugging(调试)”Just-In-Time(即时调试)”,然后勾选“Native(原生程序)”选项。如下图所示:

原生程序

“综上所述,断点是int 3这个指令触发的!(小时候的数学证明题)”。

int 3这个指令(当然是在intel系列的CPU上面)引申出来有哪些函数呢:

语言/工具

名称

描述

C++

DebugBreak

C++代码中硬编码一个断点。

C#

Debugger.Break

.NET代码中硬编码一个断点

Visual Studio

断点

设置一个断点

原文标题:Visual Studio调试之断点基础篇

链接:http://www.cnblogs.com/killmyday/archive/2009/09/26/1574311.html

【编辑推荐】

  1. Visual Studio 2010并行编程及调试诊断功能详解
  2. 图解VS 2010与.NET 4.0多显示器支持
  3. VS 2010和.NET 4的多定向支持
  4. 图解VS 2010和.NET 4起始项目模板
  5. VS 2010和.NET 4***步:Web.config文件
责任编辑:彭凡 来源: 中国软件资讯网
相关推荐

2009-10-09 10:21:31

Visual Stud

2009-07-14 11:34:42

MyEclipse断点JavaScript

2017-04-18 09:27:14

Visual StudNode.js调试

2020-03-12 13:00:36

Python断点设置编程语言

2010-12-14 09:15:50

Visual Stud

2009-11-02 14:16:43

Visual Stud

2009-04-23 14:05:28

Visual Stud历史调试功能

2013-08-01 15:12:03

Visual Stud

2010-02-23 16:24:47

Visual Stud

2010-01-25 09:17:01

Visual Stud

2009-12-03 15:58:33

Visual Stud

2009-11-23 14:32:55

Visual Stud

2009-12-04 10:35:56

Visual Stud

2012-09-17 13:49:31

2010-01-25 16:58:15

C++程序

2013-05-29 14:54:49

Visual Stud

2009-12-04 11:17:00

Visual Stud

2020-07-09 15:10:20

开发技能代码

2009-11-02 14:06:59

Visual Stud

2009-10-14 09:08:23

Visual Stud
点赞
收藏

51CTO技术栈公众号