全面解析VS2003斷點(diǎn)的內(nèi)容與觀點(diǎn)
那天我用了一個(gè)晚上的時(shí)間對于VS2003斷點(diǎn)進(jìn)行研究與學(xué)習(xí),VS2003斷點(diǎn)設(shè)置調(diào)試asp.net錯(cuò)在哪啊?謝謝!在這里拿出來和大家探討一下,一方面有利于自己的學(xué)習(xí),另一方面也增加了大家之間學(xué)習(xí)的空間。
1.當(dāng)我在一個(gè)網(wǎng)頁程序的.cs文件內(nèi)設(shè)斷點(diǎn)后,按F11后,能找到2個(gè)窗口:自動(dòng)窗口,監(jiān)視窗口" 了,可為什么2個(gè)窗口中什么內(nèi)容也沒有看到?而且也不能寫數(shù)據(jù)在這二個(gè)窗口中!是不是我操作錯(cuò)在哪啊?請問我要在自動(dòng)窗口中看到變量值和在監(jiān)視窗口可以輸入我想要知道的變量的值到底該怎樣操作才行???能不能說說具體的操作步驟?謝謝!
2.聽別人說的"直接運(yùn)行到下一斷點(diǎn)按f5就可以了" 我按別人說的做了,在一個(gè).cs文件中設(shè)了二個(gè)段點(diǎn),先把光標(biāo)放在***個(gè)斷點(diǎn),可按f5后,是運(yùn)行了程序啊!光標(biāo)沒跑到第二個(gè)斷點(diǎn)上啊!是不是我哪操作有問題?請問我要從一個(gè)斷點(diǎn)到下一斷點(diǎn)到底該怎樣操作才行???能不能說說具體的操作步驟?謝謝!
你實(shí)際可以右鍵選擇添加監(jiān)視或者ctrl+左鍵單擊變量位置得到變量的值 2你的2個(gè)斷點(diǎn)是否在一個(gè)事件體內(nèi)?不在的話肯定不行。
其次設(shè)斷點(diǎn)調(diào)試我寫個(gè)基本的你看看
比如button1的buttonclick事件里面]
有如下語句:
- {
- textbox1.text = a;********斷點(diǎn)1
- textbox2.text = b;
- textbox3.text = c;********斷點(diǎn)2
- }
- 其次在button2的buttonclick事件里面有如下語句
- {
- textbox2.text = d;*******斷點(diǎn)3
- textbox3.text = e;
- textbox4.text = f;*******斷點(diǎn)4
- }
首先按下f5運(yùn)行程序,這個(gè)時(shí)候程序不會(huì)中斷,當(dāng)按下button1的時(shí)候就會(huì)中斷在斷點(diǎn)1處,這個(gè)時(shí)候可以選擇f10,f11單步調(diào)試往下執(zhí)行(同時(shí)斷點(diǎn)3和4不會(huì)中斷,即使你按f5),你也可以選擇安f5來不過這個(gè)時(shí)候程序會(huì)停在斷點(diǎn)2處,繼續(xù)f11或f10,斷點(diǎn)3和4不會(huì)觸發(fā)。當(dāng)在葉面點(diǎn)擊button2的時(shí)候則會(huì)觸發(fā),相應(yīng)的可比照button1的分析
要是方便你***把代碼粘過來我?guī)湍憧纯?!如果確定不是代碼寫的有問題(類似于死循環(huán)什么的),那我建議你再重裝一下vs吧!再不就直接裝vs05吧!vs05提供代碼升級的,可以直接把03的代碼升級到05 你的代碼還可以照常使用!我個(gè)人感覺微軟這東西也不是沒有bug的!我用vs05在項(xiàng)目里寫個(gè)提示信息的messagebox竟然都給我出錯(cuò)!我挺服!微軟?。〕钊税。?/P>
#t#奇怪的時(shí)候,caller中這個(gè)指針已經(jīng)正常初始化了,是一個(gè)合法的指針,調(diào)用call語句執(zhí)行callee的以前,這個(gè)指針已經(jīng)被正確地push到stack上了。為什么caller從stack上拿的時(shí)候,卻拿到一個(gè)空指針呢?再次單步跟蹤,發(fā)現(xiàn)問題在于caller把參數(shù)放到了callee的[ebp+8],但是callee在使用這個(gè)參數(shù)的時(shí)候,卻訪問[ebp+c]。是不是跟前一個(gè)案例很像?
但是這次的兇手不是編譯器,而是文件版本。Caller和callee的代碼位于兩個(gè)不同的DLL,其中caller是.NET Framework 1.1帶的,而callee是.NET Framework 1.1 SP1帶的。在.NET Framework 1.1中,callee函數(shù)接受4個(gè)參數(shù),但是新版本SP1對callee這個(gè)函數(shù)作了修改,增加了1個(gè)參數(shù)。由于caller還使用SP1以前的版本,所以caller還是按照4個(gè)參數(shù)在傳遞,而callee按照5個(gè)參數(shù)在訪問,所以拿到了錯(cuò)誤的參數(shù),典型的DLL Hell問題。在重新安裝.NET Framework 1.1 SP1讓兩個(gè)DLL保持版本一致,重新啟動(dòng)后,問題解決。以上介紹VS2003斷點(diǎn)的內(nèi)容和過程。