C++ 程序 附加 进程调试 方法 本文基于VS2010为例, 其他版本的编译器也可以

Q1 : 很多时候 发现 用VS 编译器写出的程序 有时候不能调试,断点的那个红点是 空心的

Q2 : 很多时候 Debug 和 Release 版本 运行结果不一样 

Q3 : 很多时候 程序偶尔 运行结果会出错,但是 源头很难查

下面我来讲一下 Windows 下C++程序 附加进程调试方法

什么是 附加进程呢? 

就是 编译器 把 运行在 任务管理器里面的 程序(前提是有源码) 加载到 编译器里面,根据运行信息一步一步记录并调试。


为什么使用 附加进程呢?

面对 Q2 Q3 问题 ,附件进程能几乎解决掉 50%的错误。


接下来 代码说话

一 。 VS2010 新建工程  (VS 版本比较低的或者不支持的, 我前面有文章,专门是 提供了各种VS版本下载地址 和安装说明 可以去看)


File -> New -> Project ->Win32 Project -> Windows Application

二。 F5运行 确认程序可以成功编译 关掉

三。运行程序 这次要按 Ctrl+F5 运行(你们可以理解为 非调试模式下运行)  ---> 按 Ctrl + Alt + p 会出现一个对话


选择 你编译的那个程序进程, 双击 或者点击Attach 附加

这时候 程序就已经成功附加了

但是你发现 为什么没有加载呢 或者 为什么 我不能进行调试呢

原因是 你运行 你程序的时候 程序已经 运行很多模块 或者很多功能  之类 意思就是 程序已经运行了你所要调试的模块,解决办法

在 程序入口处 _tWinmain 的地方 加隔断 我习惯用MessageBox(0,0,0,0); 来隔断  不要忘记在头文件 #include<Windows.h>

结果应该是如下图:

这时候不要点击 “确定”按钮,应该点击  Ctrl+Alt+p 选择你的进程 然后 双击 附加到你的编译器


然后会发现 程序进入了你 预先设置的 断点,接下来就可以根据你的需求一步一步的调试了。  



这儿仅仅是 附加进程的调试方法,在windows 下 c++ 调试方法有很多  我先大概说几个 windbg 调试 (包括 分析 dump文件,挂载。。)、模块调试、进程调试、Pdb远程调试、内存检测、log/trace、二分注释法 。。等等 很多调试方法  接下来就介绍 教会大家用更多的调试方法

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值