Visual Studio调试之断点基础篇

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

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

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 3。CPU在执行程序的指令集的时候,只要碰到这个指令,就会中断程序的执行(当然啦,CPU会通知操作系统,然后……然后……然后……,断点的实现机制我会在以后的文章里面讲解,现在我们就只要知道那个INT 3指令会中断程序的执行好吗?)。

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

#include <stdio.h>void main(){printf("Before breakpoint"n");

__asm{int 3}printf("Before breakpoint"n");

}

 

编译方法:

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

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

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

cl /Zi /c int3.c

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

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上面)引申出来有哪些函数呢:

image

未完待续……

转载于:https://www.cnblogs.com/wuyuan2011woaini/p/5176828.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/430885.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

无线 在linux叫什么地方,请问有知道atheros无线网卡Linux驱动官方下载地址是什么吗?...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼楼上的没给出中文翻译&#xff0c;屮把它翻译下&#xff0c;以让中文用户读起来更友好些&#xff1a;1.Download board-2.bin and firmware-4.bin_WLAN.RM.2.0-00180-QCARMSWPZ-1下载---兵文件 board-2.bin 和 firmware-4.bin_WLAN…

python cv.imread_Python的OpenCV cv2.imread总是返回None而cvFeatDetector崩溃了python

我用python中的opencv弄湿了自己的脚&#xff0c;并且我认为开始加载图像是一个很好的开始。我在我的系统上构建了opencv&#xff0c;并且在目录tpl / opencv中有python绑定和opencv dll&#xff0c;这与我的项目相关。以下是一些演示问题的代码&#xff1a;from tpl.opencv im…

[译] ASP.NET 生命周期 – ASP.NET 请求生命周期(三)

使用特殊方法处理请求生命周期事件 为了在全局应用类中处理这些事件&#xff0c;我们会创建一个名称以 Application_ 开头&#xff0c;以事件名称结尾的方法&#xff0c;比如 Application_BeginRequest。举个例子&#xff0c;就像 Application_Start 和 Application_End 方法&a…

micropython lcd触摸屏显示中文_基于Micropython的天气显示 进程帖

本帖最后由 michael_llh 于 2019-4-17 10:06 编辑更下项目的进程哈&#xff01;项目的思路很简单&#xff0c;就是从网上获取天气信息&#xff0c;然后进行显示&#xff01;很尽量把过程写清楚&#xff0c;方便大家的交流和学习。首先说明下使用的硬件信息&#xff1a;Micropyt…

linux用while循环输出1到10,Linux Shell系列教程之(十一)Shell while循环 | Linux大学...

摘要在上一篇Linux Shell系列教程之(十)Shell for循环中&#xff0c;我们已经对Shell 循环语句的for循环进行了介绍&#xff0c;本篇给大家介绍下Shell 中另一种循环语句&#xff1a;Shell while循环。在上一篇Linux Shell系列教程之(十)Shell for循环中&#xff0c;我们已经对…

存储过程优缺点总结

优点&#xff1a; 1、快速 a、当对数据库进行复杂操作时(如对多个表进行 Update,Insert,Query,Delete 时&#xff09;&#xff0c;可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。这些操作&#xff0c;如果用程序来完成&#xff0c;就变成了一条条的 SQ…

c语言作业重庆科技学院,C语言程序设计学生上机报告-NO3.doc

C语言程序设计学生上机报告-NO3.doc重庆科技学院 上机实验报告(上机操作类) 课程名称 C 语 言 程 序 设 计 实验项目 循环结构程序设计(一) 机房名称 I313 上机时间 2017 年 11 月 19 日 指导老师 焦晓军 上机成绩 学生姓名 曾云 学号 2015441907 专业班级 机电 15-3 一、上机操…

sqlserver 触发器 update_运维日记| SQL server 那点事——DML触发器

各位新朋友&#xff5e;记得先点蓝字关注我哦&#xff5e;11月19日&#xff0c;21点&#xff0c;小编正六指霸屏&#xff0c;决赛圈1V4&#xff0c;忽然&#xff0c;电话响了&#xff0c;这种感觉很熟悉&#xff0c;不错&#xff0c;上次差点推掉对面水晶的那一幕又上演了……作…

linux fb应用例子,Linux下利用framebuffer画点的程序小例子

Linux下利用framebuffer画点的程序小例子&#xff1a;/** ** Filename: framebuffer.c** Description: linux下利用framebuffer画点的程序小例子** Version: 1.0* Created: 2011年02月25日 10时33分29秒* Revision: none* Compiler: …

pb利用datawindow查询符合条件的数据并且过滤掉其他数据_数据质量监测

1 Overview1.1 数据质量在数据部门里&#xff0c;数据质量问题经常是被动发现&#xff0c;所以数据质量的问题是大多数公司数据部门都不得不面对的问题。数据质量校验的目标是监控数据管道中&#xff0c;生产者、处理阶段以及消费者的数据的正确性、一致性和及时性的一项系统工…

PadLeft函数

string num12num.PadLeft(4, 0); //结果为为 0012 看字符串长度是否满足4位,不满足则在字符串左边以"0"补足 转载于:https://www.cnblogs.com/shy1766IT/p/5184937.html

将解决方案和项目放在同一目录中_借助卡第那思3D电子目录,巴鲁夫使用CAE数据扩展其产品目录...

巴鲁夫作为一家中型企业&#xff0c;1921年成立于毗邻斯图加特市的诺伊豪森&#xff0c;80年代初期直至后来很长的一段时间内&#xff0c;巴鲁夫是巴西第一家及唯一一家从事自主生产的传感器制造商。如今巴鲁夫不再仅仅位于诺伊豪森&#xff0c;而是遍布欧洲、亚洲、北美、南美…

c语言math函数 sgn,常用矩阵计算C语言代码

参考资料&#xff1a;行列式&#xff1a;http://zh.wikipedia.org/wiki/行列式#.E4.BB.A3.E6.95.B0.E4.BD.99.E5.AD.90.E5.BC.8F伴随矩阵&#xff1a;http://zh.wikipedia.org/wiki/伴随矩阵余因子矩阵&#xff1a;http://zh.wikipedia.org/wiki/余因子矩阵逆矩阵&#xff1a;h…

pip: The ultimate package manager for Python

安装Package pip install <package name>列出已安装的Package pip list查看已安装的Package的详细信息 pip show <package name>搜索PyPi上的Package pip search <keyword>卸载已安装的Package pip uninstall <package name>转载于:https://www.cnblog…

python调用mysql数据库sql语句过长有问题吗_python连接MYSQL数据库,调用update语句后无法更新数据,解决...

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"云数据库SQL Server&#xff0c;具有企业许可…

c语言结构体出现乱码,结构体数组输出时出现了乱码情况 求大神帮帮看程序

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include#include#define N 3struct Student{int num;char name[20];int count;}; int useful_poll0;int useless_poll0;int total_poll0;int main(){void input(struct Student stu[]);void print(struct Student stu[]);struct S…

动态创建对象

C#主要支持 5 种动态创建对象的方式&#xff1a;   1. Type.InvokeMember   2. ContructorInfo.Invoke   3. Activator.CreateInstance(Type)   4. Activator.CreateInstance(assemblyName, typeName)   5. Assembly.CreateInstance(typeName)  最快的是方式 3 &…

python公式如何编写_如何编写 Python 程序,资深Python大咖教你玩转Python

如何编写Python程序&#xff0c;这从来就不是一件很难的事。下面我教你保存和运行 Python 程序的标准步骤&#xff0c;如下&#xff1a;对于 PyCharm 用户1. 打开 PyCharm。2. 以给定的文件名创建新文件。3. 输入案例中给出的代码。4. 右键并运行当前文件。注意&#xff1a;每当…

c语言学籍管理系统小程序,学籍业务办理系统(开源 v2.0发布 优化代码,增加小程序端)...

更新说明&#xff1a;1、此2.0版&#xff0c;大幅度优化代码&#xff0c;增加小程序端方便使用2、v1.0测试地址已关&#xff0c;请勿测试学生在校期间避免不了要和各种证明打交道&#xff0c;比如学籍证明、转专业申请、休学申请、退学申请等等。此类业务一般流程都是学生去找老…

Android 下的EXIF

一.什么是Exif Exif(Exchangeable Image File 可交换图像文件)是一种图象文件格式&#xff0c;它的数据存储与JPEG格式是完全相同的。实际上Exif格式就是在JPEG格式头部插入了数码照片的信息&#xff0c;包括拍 摄时的光圈、快门、白平衡、ISO、焦距、日期时间等各种和拍摄条件…