调测工程时, 异常退出debug模式.

femalelover 2010-10-13 06:53:46
我在调试一个很大的VC工程的时候, 调用了WINDOWS的Sleep(), 跟进去之后走到一条指令sysenter, 然后程序就异常退出了.

每次都是这样, 不报任何错误, 会是什么原因呢.

而且, 另建一个小工程, 也调用Sleep(), 却不会异常退出.
...全文
152 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jyh_baoding 2010-10-14
  • 打赏
  • 举报
回复
可能很多,把程序的执行路径搞清楚,看具体是什么在作怪
oyljerry 2010-10-13
  • 打赏
  • 举报
回复
可以结合调试Debug输出,Crash Dump来分析定位问题的代码
用户 昵称 2010-10-13
  • 打赏
  • 举报
回复
找工具来调,有时可能是内存溢出,有时可能是某系统的返回什没设置,有时可能是某系统函数多或少了参数。

换个编译器来编译也能帮着查错。
LZNJ06 2010-10-13
  • 打赏
  • 举报
回复
注解了缩小范围查找,帮顶!
信阳毛尖 2010-10-13
  • 打赏
  • 举报
回复
sleep只是执行挂起一段时间,没有理由导致退出程序

关于sysenter指令,网上有这么一句话:“执行 sysenter 指令的系统必须满足两个条件:1.目标 Ring 0 代码段必须是平坦模式(Flat Mode)的 4GB 的可读可执行的非一致代码段。2.目标 RING0 堆栈段必须是平坦模式(Flat Mode)的 4GB 的可读可写向上扩展的栈段”

我也弄不清楚是啥意思,原文出处http://hi.baidu.com/neroxps/blog/item/761ffbcdaa57701900e92838.html

野男孩 2010-10-13
  • 打赏
  • 举报
回复
sleep是不会导致程序退出的。

sysenter指令是用来切入ring0,调用系统内部函数, 大量的API都是靠sysenter指令切换。这个不是导致推出的原因。

程序是多线程吧?走到sysenter指令时,再step,这时候线程估计会切换,别的线程有退出的动作。所以看起来到了Sleep里面的sysenter程序就退出了.
快乐鹦鹉 2010-10-13
  • 打赏
  • 举报
回复
Sleep的时候有什么东西还在工作呢?
visualwind 2010-10-13
  • 打赏
  • 举报
回复
崩溃的原因可能会很多,光这些信息是看不出来的。
关于sysenter请参考文章:
http://blog.csdn.net/misterliwei/archive/2009/07/15/4351592.aspx

16,548

社区成员

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

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

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