說的都沒錯(cuò)丙挽,但聽起來怪怪的
今天晚上想把代碼在服務(wù)器上走一下形式,編譯運(yùn)行一下拦英,通過了就收拾收拾回宿舍了懊蒸。
結(jié)果編譯沒有問題拇泛,運(yùn)行的時(shí)候突然報(bào)了“段錯(cuò)誤 (core dumped)”,當(dāng)時(shí)就尿了思灌,呵呵俺叭,學(xué)長(zhǎng)學(xué)姐的“l(fā)egacy”。
代碼需要在windows和linux上跨平臺(tái)運(yùn)行泰偿,為了避免使用ftp工具(一開始一直使用psftp, 雖然命令行看起來有點(diǎn)炫酷但實(shí)在是太不方便了熄守,后來找到了一個(gè)FileZilla, 挺好用的,但也挺麻煩)耗跛,就開始用git裕照。這幾天還和范老師猛烈的研究git怎么用,幸好有林大神调塌。
所以代碼都是在Windows上寫的晋南,用Visual Studio。Visual Studio 我裝了兩個(gè)版本羔砾,2008 和 2013 Express负间。因?yàn)閷?shí)驗(yàn)室里之前的組件都是用2008編譯的,所以依賴那些的組件在2013上編譯通不過姜凄,也就沒法調(diào)試唉擂。但2008寫代碼實(shí)在是太難看了,尤其是配合上Visual Assist檀葛,簡(jiǎn)直難看玩祟,學(xué)長(zhǎng)又拒絕使用2013重新編譯原來的組件,所以機(jī)智的鵬寶會(huì)有一個(gè)build目錄和一個(gè)build_2013目錄屿聋,cmake兩次空扎,一次用2008的,一次用2013的润讥,用2013的看代碼寫代碼寫注釋转锈,用2008的編譯調(diào)試,誒楚殿,疲勞撮慨。
怎么說那去了。
總之發(fā)現(xiàn)了錯(cuò)誤我很慌張脆粥,因?yàn)樵趙indows上是沒有問題的(誒砌溺,以后被測(cè)試的抓到可能說的最多的一句話了),所以也就沒法在VS里調(diào)試变隔,項(xiàng)目又很大规伐,用gdb一點(diǎn)一點(diǎn)調(diào)試肯定會(huì)很難過。所以就去網(wǎng)上找匣缘,然后發(fā)現(xiàn)可以利用出錯(cuò)之后的core文件使用gdb找到出問題的地方猖闪。
然后就用 -DCMAKE_BUILD_TYPE=Debug 給生成的可執(zhí)行文件添加了調(diào)試信息(這也解決了我之前的一個(gè)問題鲜棠,我之前問范老師,為啥windows上的大家都提供一個(gè)release的lib培慌,一個(gè)debug的lib豁陆,但linux上的只有release的呢?范老師說吵护,linux上可能只有release吧献联。嘻嘻嘻嘻嘻,才不是...)
然后調(diào)整了core文件的大小限制何址,生成了core文件,最后用gdb找到了出問題的位置进胯,臥槽這的代碼我還沒開始看呢... 煩死了用爪。
值得慶幸的是,鵬寶機(jī)智的發(fā)現(xiàn)胁镐,原來是輸入的文件的格式不對(duì)偎血,程序沒有問題,但其實(shí)這也算有問題盯漂,魯棒性不強(qiáng)... robustness哈哈颇玷,這個(gè)單詞好有意思...
所以問題就解決了...