探討說明VS2003程序不能調(diào)試的問題
今天我和同事們研究了一下午,有個問題始終搞不定。她的VS2003程序不能調(diào)試,設(shè)置的斷點不會停下來,重裝了機器也沒有解決問題??磥硐氲降霓k法應(yīng)該都用完了,不過我也沒有思路,我電腦上裝的是VS2005不能用來開發(fā)基于.NET的ArcObjects程序,不過也得硬著頭皮上,誰叫我是經(jīng)理呢。
我懷疑是項目文件是不是有問題,讓她把文件遷移到新建的項目中。后來她發(fā)短信告訴我,說找到原因了,但是不知道怎么解決。問題變得更加詭異,能夠運行兩三次,然后就不行了。
她發(fā)現(xiàn)是MapControl的WhereClause設(shè)置不對VS2003導(dǎo)致程序拋出異常。另外她把代碼發(fā)過來給我看看,非常簡單一個MapControl然后加一個Command工程。怎么會這么怪呢,越來越怪了。我在看她的代碼時發(fā)現(xiàn)一個問題,她用下面的語句來釋放ArcObjects:
ESRI.ArcGIS.Utility.COMSupport.AOUninitialize.Shutdown();
m_AoInitialize.Shutdown(); // 釋放 COM 對象
我查了一下代碼沒有m_AoInitialize.Initialize()的語句,沒有初始化。
#t#然后我讓她看看運行結(jié)束是否有AppROT.exe在,不過這個VS2003程序不一定是程序留下的,啟動了ArcMap或者ArcCatalog也會有。但是如果這些程序沒有啟動也有的話就有問題了。的確有這樣的事情,而且在別人機器上也是這個樣子,只是能夠調(diào)試的次數(shù)不一樣而已。此時我已經(jīng)基本上確定是這樣回事了,讓她去掉后面的m_AoInitialize.Shutdown()看看,但是她忙別的取了,我同學(xué)在旁邊催我收拾東西下班了。
因為沒有得到確認,所以上車后我發(fā)了條短信問了一下,許久,我已經(jīng)到家了才回。的確如我所預(yù)料的那樣,就是那么回事。通過QQ等聊天工具幫助別人解決VS2003程序問題,比在現(xiàn)場解決難度大很多,很多時候沒有思路,但是經(jīng)過幾次嘗試就有了思路,通過QQ這個確認的過程比較長,需要思考的時間比較多。
這讓我想起了火星機器人,我是在遠程遙控驗證我的猜測,但是反饋比較慢,驗證的東西相對來說比較少,需要深思熟慮后才去驗證。但是這種方式可以清晰看出一個人的思路,是怎么分析問題的,被幫助的人收獲很大,被迫把自己的思路暴露出來。