『求助』Trace point的实现?

cdsnpeter 2011-03-23 05:26:44
VS2008以上可以设置Trace point。
在不终止程序执行的情况下来向Debugger Listener输出信息。
可以在Break Point上右键,弹出菜单选择"When hit",然后再弹出界面上勾选上continue execution。
并在Print message中填上你要Output的message.

这样的好处是可以实时输出你要看到的Debug Information而无需中止程序。
在调试实时性要求比较高的软件上应该很有用。

我的问题是,谁知道这种Debug 方式的实现原理是什么?
大概说下就可以,或者我可以参考那些资料呢?
谢谢了。
...全文
144 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
cdsnpeter 2011-03-29
  • 打赏
  • 举报
回复
http://blog.csdn.net/hackwaly/archive/2007/03/26/1542075.aspx
这篇文章不错,感兴趣的可以一看。
cdsnpeter 2011-03-29
  • 打赏
  • 举报
回复
谢谢9楼以及捧场的各位,问题已经解决。
红色代码 2011-03-25
  • 打赏
  • 举报
回复
很少用到这个功能...顶9楼
tj_swjtu 2011-03-25
  • 打赏
  • 举报
回复
赞同9楼!!!
opqit 2011-03-25
  • 打赏
  • 举报
回复
调试的过程有两个进程,调试进程(这里是VS2008)和被调试进程(你自己的程序)
这里的Break Point,是软中断,实现的方法,就是把原来这个地址上的汇编代码替换成 int 3指令,这样程序到这里,就自动把控制权交给了调试进程(这是int 3中断实现的),同时恢复这个地址的汇编指令,普通到这里就停止了。

打log 和continue execution是如何实现的呢?
你在加这个断点的时候,加上了这两个要求(log and continue),调试进程在获得了被调试进程的控制权(其实就是用类似suspendthread方法把被调试进程的所有线程到挂起来),看到了这两个要求,就做了这两个动作(打log,把被调试进程的所有线程resumethread),那被调试进程自动就继续运行了。

参考书籍: 张银奎的《软件调试》里面也讲到了,这个问题的实现。
这是一本中国人写的达到世界级水准的软件调试书籍。个人觉得在软件调试的原理和实现上比AWD讲的更深入。
site: http://advdbg.org/

cdsnpeter 2011-03-25
  • 打赏
  • 举报
回复
顶一下,看有没有高手给个思路。
向立天 2011-03-23
  • 打赏
  • 举报
回复
你研究这个干嘛
工作需要的话和我私聊
这个一两句话说不清
fishion 2011-03-23
  • 打赏
  • 举报
回复
找秘书长
Dreadnought 2011-03-23
  • 打赏
  • 举报
回复
头一次晓得有这功能额,谢谢普及,等下去试用下....
cdsnpeter 2011-03-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 tandyt 的回复:]

不知道,没用过这些功能,呵呵
[/Quote]
谢谢帮顶。。。
TandyT 2011-03-23
  • 打赏
  • 举报
回复
不知道,没用过这些功能,呵呵

16,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧