vs2015开发c语言 简书,微软符号服务器_NT_SYMBOL_PATH给VS调试带来的隐藏坑
昨天我碰到一個非??拥膯栴},問題是這樣的:
我機子上已經(jīng)裝了vs2015和vs2010,vs2010和vs2015都跑得很溜,沒有啥異常現(xiàn)象。然后昨天我不知哪里來的突然想法:機子上有些資源需要打包收藏,便于后面自己使用。于是乎我就安裝了vs2008,分別是以下幾個文件
vs2008安裝包示意圖
安裝順序如圖上所標。安裝過程中倒是自己做了一些偷工減料:就是我打開著vs2010正在寫代碼,同時在安裝vs2008,這時候在安裝過程中就會提示我vs需要關閉,此時我再去選擇關閉,但是一旦提示過后我又偷偷打開了vs2010,咳,因為安裝過程實在太久了。好,就這樣安裝了2008,之后我就繼續(xù)開始調(diào)試我的代碼了。神奇的一幕就發(fā)生了:
我的vs2010突然之間加載pdb非常慢。表現(xiàn)是我通過ide界面上的debug按鈕點擊調(diào)試,程序啟動,就當加載到每個dll的時候,程序就卡住了,而且是卡在了加載本地dll。你說嘛,要是加載windows dll卡住也就算了,因為我確實配置了windows符號svr來拉取。但是一會想也不對啊,windows所有本地的符號我都是拉取過的,之前一直都沒有這個問題,怎么會現(xiàn)在突然有這個問題呢,更何況是在加載本地的dll的時候卡住的,更是想不通啊!!我轉念一想,是不是vs此時怪異抽筋啊,于是乎我想起了幾個絕招,絕招中的絕招:vs重啟,電腦重啟。但是殘酷的現(xiàn)實告訴我仍然是無效。算呢,可能是今天電腦怪異,硬盤說來也跑了很多天了,明天再來吧。
第二天我過來,問題仍然依舊。這回真沒有辦法了,得硬著頭皮搞啊,要不沒有辦法干活啊,于是乎我重現(xiàn)了現(xiàn)場,拿起我的windbg來進行attach跟蹤,得到如下堆棧
windbg跟蹤vs加載符號卡死堆棧
基本上確定是在vsdebug.dll里面執(zhí)行UpdateInfo卡住了,而且是卡在了sta網(wǎng)絡com調(diào)用,com調(diào)用啊,既激動有懊惱,激動的是剛好最近在深入com底層了解,懊惱的是還是不知道為什么。好吧,我已經(jīng)是窮途末路,找了同事一起來看看,最終我們根據(jù)匯編定位到是在等待一堆的event事件回來,但仍然是無果,因為也解決不了問題。就這樣上午仍然無果
下午了,實在沒有辦法了,只能慢慢等吧。不甘心,于是乎死馬當活馬醫(yī),卸載vs2008,反正目前來看定位是昨天裝完2008是不是安裝過程不標準,或者2008在我這個機子上有問題導致的,畢竟是裝完后出現(xiàn)的,但是黃天總是喜歡開歡笑,仍然卸了又泄,把windows更新都卸載了,依然無果。算了,算了,進行第二步定位:
是不是工程有問題,是不是只有vs2010有問題,從這兩步去定位
1、我新建一個簡單工程,mfc的,試了,跑得很溜啊,尼瑪,難道是我的工程自己出的問題。好吧,突然想起之前邪惡的ncb和suo文件,于是乎把他們刪除了,問題依舊。是不是我的工程太舊太古老了,生成了一堆垃圾后工程被損壞了問題,于是我重新編譯了另一個工程,尼瑪,仍然問題依舊。沒轍,沒有辦法懷疑工程吧
2、使用2015來編譯試試,此時一個轉機出現(xiàn)
vs2015拉取微軟將服務器符號示意圖
此時的我瞬間恍然大悟,尼瑪,
1、原來他任何時候都在從windows服務器加載
2、windows符號本地有了還仍然去svr查找
3、微軟服務器符號加載如此之慢,竟然有時快有時慢!!!
好吧,坑了我一天的惡心bug,只要去除掉全局變量中的全局微軟符號svr配置,即可
從這里我得出了兩個教訓:
1、以后別再相信_NT_SYMBOL_PATH這個符號的可靠性了,微軟符號服務器有時好有時壞這個才是最大的坑(事實證明不是這個問題,我得出了錯誤的結論)
2、一定要隨手準備一個網(wǎng)絡監(jiān)聽工具包,隨時觀測來自網(wǎng)絡的坑爹等待
補注:后和同事溝通,是symsrv.dll有些版本有bug,目前得知的情況是只有6.2這個版本才是好的,其他版本有bug
symsrv.dll6.2版本
導致了這個問題有些情況下會出現(xiàn)有些情況下不會出現(xiàn),
我出問題的版本是
vs2015隨身帶的版本
symsrv.dll2015版本
vs2010隨身帶的版本
作者:fishmai0
鏈接:https://www.jianshu.com/p/bd82ba4f0a1a
來源:簡書
著作權歸作者所有。商業(yè)轉載請聯(lián)系作者獲得授權,非商業(yè)轉載請注明出處。
libaineu2004
發(fā)布了460 篇原創(chuàng)文章 · 獲贊 535 · 訪問量 325萬+
他的留言板
關注
標簽:符號,windows,SYMBOL,vs2010,dll,問題,VS,PATH,加載
來源: https://blog.csdn.net/libaineu2004/article/details/104109786
總結
以上是生活随笔為你收集整理的vs2015开发c语言 简书,微软符号服务器_NT_SYMBOL_PATH给VS调试带来的隐藏坑的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: bmp图片加水印C语言,[求助]C语言
- 下一篇: linux下date -d,linux