如何用int 3

int 3就是我们常说的软件断点,问题是,在什么时候我们需要用到int 3呢?

我们经常会碰到这样一种场景,有时候一个软件会由多个EXE组成,其中的某些EXE是由另外的EXE调用的,这时候我们通常调用其它EXE创建进程的时候必须用Visual Studio 的Attach Process把VS的调试器和进程关联上(同样用WinDbg也是如此)。这时候我们会碰到一个问题,就是因为进程启动的速度过快,结果进程初始化的一些代码,比如在MFC程序的InitInstance里,WinMain里或是任何其他的初始化代码很快就执行过去了,如果Bug出现在这些代码中,你就无法调试了。

怎么办?说道这里,大家应该明白我的意思了,对了,这时候就可以在初始化打头的函数中用int 3把程序软中断,随后再Attach Process。当然,在我知道int 3之前我一直用的是Sleep让线程沉睡,但是这个办法不仅不如int 3优雅,更没有int 3方便,因为毕竟int 3是实实在在的断点。

int3还有一个用户态的API封装DebugBreak(),用法类似。

不过这篇文章还没有完,因为在普通情况下,如果你直接运行程序,当执行到int 3或是DebugBreak时会弹出一个“XXX 已停止工作,Windows正在检查该问题的解决方案。。。”的系统提示框,这时候需要等上一段时间后才会弹出对话框让你选择调试程序还是关闭程序,然后我们只要选择调试并关联上对应的工程就可以对工程进行正常的调试了。

时间: 2024-12-05 07:21:20

如何用int 3的相关文章

*HDU3398 数学

String Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2552    Accepted Submission(s): 755 Problem Description Recently, lxhgww received a task : to generate strings contain '0's and '1's only,

【Python】初学编程适合学Python?其有何用?

初学编程适合学Python?其有何用? 作者:白宁超 2016年10月4日19:59:39 摘要:python语言俨然不算新技术,七八年前甚至更早已有很多人研习,只是没有现在流行罢了.之所以当下如此盛行,我想肯定是多因素造成了,当然市场需求的重要因素.吴军博士对大数据流行的解释与python流行或许有些默契.数据一直以来都存在,只是在历史条件下,由于计算性能和技术发展的原因,与之匹配的数据处理技术还不是很先进,以至于很多数据被我们舍弃了.同样,python语言简洁流畅等多种优点,也会让第一次接触

如何用c语言调用c++做成的动态链接库

今天在做东西的时候遇到一个问题,就是如何在C语言中调用C++做的动态链接库so文件如果你有一个c++做的动态链接库.so文件,而你只有一些相关类的声明, 那么你如何用c调用呢,别着急,本文通过一个小小的例子,让你能够很爽的搞定.   链接库头文件:head.h class A { public: A(); virtual ~A(); int gt(); int pt(); private: int s; }; // 何问起 hovertree.com firstso.cpp #include <

如何用.net c# 读取epub格式文件

如何用.net(c#)读取epub格式文件 epub格式是印刷出版界常见的格式,本格式遵循XML原则把网页进行压缩打包. 如何用c#读取epub格式文件是个头疼的问题,本人搜遍各大网站,发现介绍都语焉不详. 因项目中要用的此功能,特做案例整理如下,仅供参考. // 动态库下载地址 https://epubreader.codeplex.com/,添加引用eBdb.EpubReader.dll // 头部增加引用 using eBdb.EpubReader; string fullfile = @

android:如何用一天时间,写出“飞机大战”这样的游戏!(无框架-SurfaceView绘制)

序言作为一个android开发者,时常想开发一个小游戏娱乐一下大家,今天就说说,我是怎么样一天写出一个简单的"飞机大战"的.体验地址:http://www.wandoujia.com/apps/edu.njupt.zhb.planegame游戏分析玩过"飞机大战"游戏的都知道,飞机大战中的主要"角色"有:1.玩家飞机2.敌方飞机3.玩家飞机发送的子弹4.敌方Boss飞机发送的子弹我们需要控制的有:1.绘制屏幕内的角色2.控制角色的逻辑,比如:敌方

如何用两个栈实现一个队列

在数据结构中,我们都学习过队列和栈,我们知道栈的基本特征是后进先出,这个当然也很好理解,用一句歇后语给大家通俗得解释一下,就是: 砌墙的砖瓦--后来居上.很容易明白,就是后面来的反倒在最上面,当然你取的话,是不是得从最上面开始取呀,很容易明白的.再来说说队列,队列的特征是先进先出,就是说先来的先走,生活中的例子就是排队买票,这个大家都很熟悉了,就是先买到票的人先走,后买到票的人后走. 接下来就进入我们今天的主题,即如何用栈来实现队列? 在这里我们可以通过两个栈来操作.第一个栈中存放入队列的元素,

如何用C代码生成二维码

当下因微信和支付宝等手机应用广泛使用,而基于二维码/一维条码的移动支付,也借助手机移动端席卷全国,使得越来越多的人知道有"二维码"这么一种东西. 对于普通用户而来,一般只知道将自己的二维码展示给别人,别人使用软件识别这个二维码即可完成一定的功能.比如,扫码二维码付款.扫码二维码加微信好友.扫码二维码访问网页.扫码二维码下载app等等.这些个功能,在日常行为中,已经很常见了,但作为程序猿的我们,我们怎么能不知道二维码是如何生成的呢?或者说,我要自己生成一个二维码,除了去网页上找二维码生成

如何用OpenCV跟踪鼠标操作

转载:如何用OpenCV跟踪鼠标操作 http://blog.skyoung.org/2014/05/01/how-to-track-mouse/ 在视频第一帧手动标记出目标的位置是在线视觉跟踪中最基本的一个操作,实现这个操作需要检测鼠标的移动和点击事件.OpenCV提供了setMouseCallback这个函数来响应鼠标的动作,并返回鼠标在绑定窗口上的坐标位置.下面就这个函数的使用做一个简单的介绍. 首先,setMouseCallback的C++函数声明如下: 1 void onMouse(i

如何用C保存一行未知个数的数字?

同学做华为的上机题,问我这样一个问题,如何保存一行未知个数的数字? 首先想说的是,华为的上机题目真是坑爹啊,给个n告诉一下数字个数会死啊?他们下午做的题目还有一个是位复制的,输入和题目完全对应不上,真是不知道怎么出的题目,能不能学学code jam或者其他平台的题目,用点心好不好. 其次说说这个问题是怎么样的. 很多时候也许我们也会碰到这样的问题,知道输入时很多行,而且每一行都是有未知个数的数字,可能1个,2个,3个这样.我们现在不考虑把全部数据都读进来的情况,因为这样很简单,只需要用用个whi