VS2003 C#开发ArcEngine 9.0不能调试的分析思路

 今天下午徒弟向我求救,有个问题搞不定了。她的VS2003不能调试了,设置的断点不会停下来,她把机器重装了也没有解决问题。看来她能想到的办法应该都用完了,不过我也没有思路,我笔记本上装的是VS2005不能用来开发基于.NET的ArcObjects程序,这更增加了几分难度。不过也得硬着头皮上,谁叫我是师傅呢,徒弟搞不定了师傅上,我们只能通过QQ进行有限的交流。
        首先我让她检查一下是否是调试版,她确定是的,排除一种可能。然后让她新建一个简单的C#工程,看是否能调试,她说可以,说明VS2003应该没有什么问题。然后我听她说同样的程序在别人的机器上也可以调试,唯独她的不行。我怀疑是项目文件是不是有问题,让她把文件迁移到新建的项目中。后来她发短信告诉我,说找到原因了,但是不知道怎么解决。
        问题变得更加诡异,能够运行两三次,然后就不行了。她发现是MapControl的WhereClause设置不对导致程序抛出异常。另外她把代码发过来给我看看,非常简单一个MapControl然后加一个Command工程。怎么会这么怪呢,越来越怪了。我在看她的代码时发现一个问题,她用下面的语句来释放ArcObjects:
ESRI.ArcGIS.Utility.COMSupport.AOUninitialize.Shutdown();
m_AoInitialize.Shutdown(); // 释放 COM 对象
我查了一下代码没有m_AoInitialize.Initialize()的语句,没有初始化。
       然后我让她看看运行结束是否有AppROT.exe在,不过这个进程不一定是程序留下的,启动了ArcMap或者ArcCatalog也会有。但是如果这些程序没有启动也有的话就有问题了。的确有这样的事情,而且在别人机器上也是这个样子,只是能够调试的次数不一样而已。此时我已经基本上确定是这样回事了,让她去掉后面的m_AoInitialize.Shutdown()看看,但是她忙别的取了,我同学在旁边催我收拾东西下班了。
    因为没有得到确认,所以上车后我发了条短信问了一下,许久,我已经到家了才回。的确如我所预料的那样,就是那么回事。通过QQ等聊天工具帮助别人解决问题,比在现场解决难度大很多,很多时候没有思路,但是经过几次尝试就有了思路,通过QQ这个确认的过程比较长,需要思考的时间比较多。这让我想起了火星机器人,我是在远程遥控验证我的猜测,但是反馈比较慢,验证的东西相对来说比较少,需要深思熟虑后才去验证。但是这种方式可以清晰看出一个人的思路,是怎么分析问题的,被帮助的人收获很大,被迫把自己的思路暴露出来。      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值