明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1971|回复: 5

[求助]关于debug进去与直接ap加载进去,运行结果不一样的问题

[复制链接]
发表于 2011-5-17 17:02:49 | 显示全部楼层 |阅读模式
最近遇到一个问题,
就是我在选择一个自定义实体的时候,
debug进系统,如果没选中就会return,没有问题。
但是我如果直接启动CAD,加载arx程序,
如果没选中实体,直接按回车,
系统不return,而是直接报错了。

我试着用MessageBox,想阻塞命令窗口,可是不行。

是否与On_kInitAppMsg(void *pkt)、On_kUnloadAppMsg (void *pkt)
这两个函数有关系?
如果有,应该怎样配置,让dubug的运行结果与直接加载arx结果一样?

是否直接加载arx与debug进系统,初始化的顺序不一样?
还望各位大侠指点。
多谢!
发表于 2011-5-18 17:03:48 | 显示全部楼层
说的不明白。。。。你直接加载是Release版本?正常情况,调试不调试是相同的结果!你直接上代码吧,不过这几天有点忙,不知道下次什么时候会上
 楼主| 发表于 2011-5-19 14:11:21 | 显示全部楼层
本帖最后由 epwt 于 2011-5-19 14:13 编辑

  1.   resbuf *filter;
  2.   filter = acutBuildList(8, "WALL", 0);
  3.   if(acedSSGet(NULL, NULL, NULL, filter, ss) != RTNORM)
  4.   {
  5.     acutRelRb(filter);
  6.     return;
  7. }
  8.   acutRelRb(filter);
  9.   acedSSLength(ss, &len);
  10.   acedSSName(ss, 0, ent);
  11.   acdbGetObjectId(objId, ent);
  12.   acedSSFree(ent);


正常情况下,如果我选中的不是WALL图层的实体,
直接按回车,应该就走到if里直接return的,
我debug进去,的确是这样。

但是我直接打开cad,加载arx程序,
执行同样的操作,程序却报错了。

我严格检查了在执行这个操作之前的操作,
看是否前面的操作导致这个操作失灵。

于是我怀疑,是不是debug进去,加载的顺序和
直接打开cad加载的顺序有些不一样,导致这个问题的出现。

当然,更可能的是某些内存没回收,但是这个还真的很难找啊。

还望多指教。
 楼主| 发表于 2011-5-19 17:33:44 | 显示全部楼层
问题已经解决了,
我在选择WALL图层前,
把其它不相关图层都关闭了,
选择完毕,执行相应操作后,
再把关闭的图层打开。
这样就除非用户点取消,
不然是不会选错的。

问题虽然解决了,
但还是回问回去,
从编译器运行程序和直接打开cad加载程序,
初始化的顺序是否不同?
如果不同,那他们初始化的顺序分别是什么样的呢?

还望大家多指点。
发表于 2011-5-21 20:19:45 | 显示全部楼层
那个可能叫“从调试器启动程序?”你指的是这个吧?通常来说,如果同是Debug版本的程序,理论上来讲,是一样的!不太清楚,你这里所谓的“初始化”的顺序到底是指什么东西。Debug版和Release版,一个区别是Debug版通常会做一些默认的初始化,如你定义一个int i;在调试版中,它的值是0,而发布版,这就可能是一个随机数!
 楼主| 发表于 2011-5-23 11:21:11 | 显示全部楼层
哦,这样子呀。
看来问题是处在初始化了。
多谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 12:57 , Processed in 0.140978 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表