love in C++, live on MFC

to get ready...

C++博客 首页 新随笔 联系 聚合 管理
  47 Posts :: 0 Stories :: 97 Comments :: 0 Trackbacks
调试程序的时候,一般
1)启动调试器,比如VC
2)在VC中设断点
3)操作程序,使得程序运行到断点,停下来
但是现在我遇到一个情况,希望调试的情景是这样的:双击某个文件,我的程序启动后,这个时候我想程序停下来,让我在VC中调试它。
但是,双击文件后启动的程序,是个独立的exe运行程序,肯定不是在VC的运行控制下的,VC中设置的断点不起作用的。怎么办呢?
这个时候可以在想让程序停下来的地方增加指令_asm int 3,debug下编译好。双击文件后运行这个exe,在exe运行到_asm int 3时,就会中断,而把当前的exe运行与一个新的调试器(一个新的VC进程)结合起来。接下来就像一般的调试了。
这时的调试步骤类似与:
1)程序运行
2)遇到特定条件时,_asm int 3把当前exe与一个新的调试器,比如一个新的VC进程,联系起来
3)在调试器中调试exe

:)
posted on 2006-07-06 17:35 flyingxu 阅读(5874) 评论(10)  编辑 收藏 引用 所属分类: C/C++VC/MFCBug of Today

Feedback

# re: _asm int 3 的一个应用:在程序运行后再进入调试器 2006-07-06 18:27 LOGOS
汗.没有源代码,这种调试也惘然啊  回复  更多评论
  

# re: _asm int 3 的一个应用:在程序运行后再进入调试器 2006-07-06 23:47 flyingxu
@LOGOS
是啊,我写完了也感觉我写的这篇文章没意义,呵呵  回复  更多评论
  

# re: _asm int 3 的一个应用:在程序运行后再进入调试器 2006-07-08 22:02 centrino
晕,可以attach到那个运行的进程啊。  回复  更多评论
  

# re: _asm int 3 的一个应用:在程序运行后再进入调试器 2006-07-09 01:55 flyingxu
@centrino
怎么attach?愿闻其详

我这篇文章是蛮垃圾的,不过自己不准备删了,放在这里吧  回复  更多评论
  

# re: _asm int 3 的一个应用:在程序运行后再进入调试器 2006-07-27 16:22 hasdssdsfsf s sf
解决了我的 问题,上面的人怎么只知道怎么做,难道就不知道自己 试一试呢
的确 可以中断掉
但是,我不知道,在这样的情况,有什么作用!!!!  回复  更多评论
  

# re: _asm int 3 的一个应用:在程序运行后再进入调试器 2007-01-19 10:44 yoran
我知道softice一类的软件可以附加到某个进程开始调试,不过都是汇编一级的。  回复  更多评论
  

# re: _asm int 3 的一个应用:在程序运行后再进入调试器 2007-05-03 13:49 NDD
此言差矣,其实这是有用的。比如你写了一个程序,需要其他外部程序来调用他,然后你跟上debug.那么就可以这么做。内部放一个int 3.一被运行,就有机会
attach上去。  回复  更多评论
  

# re: _asm int 3 的一个应用:在程序运行后再进入调试器 2007-10-12 17:46 lijunhui
还有一种方法:
在要停止的地方写一个MessageBox,当运行后弹出Messagebox时,先不要点,打开任务管理器,选择该进程,右键调试,这时打开系统关联的调试器,一般为系统中最高本版VC,这时可以选择打开源代码,找到Messagebox的地方,在它下面设置断点就可以调试了。  回复  更多评论
  

# re: _asm int 3 的一个应用:在程序运行后再进入调试器 2009-02-26 16:42 jiajia
有用的,
举个实例,比如开源的项目,你只有开源部分,而界面的部分没有代码
你想调试的话就可以用自己的dll替代别人的项目的dll然后就可以调试了呀  回复  更多评论
  

# re: _asm int 3 的一个应用:在程序运行后再进入调试器 2009-06-02 17:53 ppc
有许多方法
1. 在你的程序里面写一个死循环,
while(true)
{
Sleep(2000);
}
然后双击运行,用attach process的方法,然后Set next statement可以进行调试了
2. 在你需要调试的地方加一个_ASSERT(0);双击程序的时候会弹出异常窗口,然后点击“调试”就可以调试了。  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理