鏈榪戠湅浜?jiǎn)銆婅蔣浠惰皟璇曞疄鎴樸嬶紝緇撳悎鑷繁鐨勭粡鍘嗭紝鎬葷粨浜?jiǎn)涓涓嬶細(xì)
1. 涓庢祴璇曠敤渚嬬浉鍏?/p>
a. 濡傛灉涓嶈兘杈懼埌“嫻嬭瘯鍏堣”錛岃嚦灝戝簲璇ュ湪鍐欏畬浠g爜鍚庢湁鐩稿瀹屾暣鐨勬祴璇曠敤渚嬨傚浜庢紜х殑淇濊瘉鍜屼互鍚庨噸鏋勪唬鐮侀兘鏄湁濂藉鐨勩?/p>
b. 姣忔娣誨姞鏂板姛鑳芥垨淇浜?jiǎn)涓涓猙ug鏃訛紝閮藉簲璇ュ鍔犳祴璇曠敤渚嬶紒A鍘嗙粡鍗冭緵涓囪嫤緇堜簬fix 浜?jiǎn)涓涓猙ug錛屽緢涔呭緢涔呬互鍚庯紝B瑙夊緱榪欐浠g爜闇瑕佹敼鏀癸紝浜庢槸鏀逛簡(jiǎn)鏀癸紝鍚庢潵鐨勭粨鏋滆繕鏄敼浜?jiǎn)锛岃屼笖欏哄埄鎻愪氦鍒頒簡(jiǎn)搴撻噷錛堝洜涓篈褰撴椂閬囧埌鐨刡ug 騫舵病鏈夊嚭鐜幫紒錛?/p>
c. 鍥炲綊嫻嬭瘯
淇敼浠g爜鍚庤繘琛屽洖褰掓祴璇曘傛瘡嬈℃彁浜や竴涓増鏈悗鑷姩榪涜鍥炲綊嫻嬭瘯錛屼繚璇佸簱閲岀殑浠g爜鐨勬紜с?
d. 綆鍖栨祴璇曠敤渚?
濂藉錛氬彲浠ユ帓闄や笉璧蜂綔鐢ㄧ殑鍥犵礌錛涘噺灝戞祴璇曠敤渚嬬殑榪愯鏃墮棿錛涙渶閲嶈鐨勬槸錛屼嬌鐢ㄦ祴璇曠敤渚嬫洿瀹規(guī)槗璋冭瘯錛堣皝鎰挎剰澶勭悊閭d簺濉厖浜?jiǎn)鏁扮櫨鎴栨暟鍗儥骞鐨勬暟鎹鍣ㄥ憿锛熷Q?
鏂規(guī)硶濡傦細(xì) 濡傛灉嫻嬭瘯渚嬪瓙姣旇緝濂芥敼錛屽彲浠ュ皢鍏舵敼灝忥紱灝嗚緭鍏ラ泦鏀瑰皬
e. 瀹屾垚浠g爜錛屾竻鐞嗗悗閲嶆柊榪愯鎵鏈夋祴璇曠敤渚嬨?
2. 鍏充簬紼嬪簭鐨勭紪璇?
a. 閲嶈緙栬瘧鏈熼棿鐨剋arning錛屾渶濂芥妸warning鏁板噺涓?. 涓嶈蹇界暐緙栬瘧鍣ㄨ鍛婏紝鍗充嬌瀹冧滑鍙兘鏄棤瀹崇殑銆?
eg錛?
int add(int a,int b){
return a +b ;
}
緇撴灉澶存枃浠墮噷澹版槑鎴愪簡(jiǎn) extern int add(long a,int b)
浼?xì)璋冭瘯姝讳汉鍟婂Q岃皟紼嬪簭鐨勬椂鍊欎竴鐪嬬▼搴忓畾涔夋槸瀵圭殑鍟婏紝鎬庝箞浼犵殑鍙傛暟涓涓嬪氨鍙樹(shù)簡(jiǎn)錛?
b. 濡傛灉鍑虹幇鑾悕鍏跺鐨勯敊璇?
濡傛灉鏄敤Makefile緇勭粐宸ョ▼鏃訛紝鑰冭檻make clean錛屾湁鍙兘淇敼鏁版嵁緇撴瀯鎴栧ご鏂囦歡鍚庢敼鍙樹(shù)簡(jiǎn)涓浜涗笢瑗匡紝浣嗘槸鐢變簬涓浜涙湭鐭ュ師鍥犺鏂囦歡騫舵湭閲嶆柊緙栬瘧銆傚鏋滃嚱鏁版槸C鍑芥暟錛屾湁鍙兘璋冪敤鑰呭拰琚?璋冪敤鑰呯殑鍙傛暟鐨勬垚鍛樺拰綾誨瀷涓嶅悓銆傚鏋滀竴涓被鏂規(guī)硶錛屽垯璁塊棶浠諱綍綾繪垚鍛?閮藉皢鍙戠敓閿欒錛屽洜涓鴻繖涓や釜綾葷殑鍐呭瓨鑰屽凡鍑犱箮鏄畬鍏ㄤ笉鍚岀殑銆傝繖鍙兘瀵艱嚧Segmentation falut,鎴栨槸寰堜箙涔嬪悗鎵嶈兘媯(gè)嫻嬪埌鐨勫唴瀛樼牬鍧忋?
3. 鍏充簬閾炬帴
a. 閾炬帴鍣ㄧ殑鍩烘湰宸ヤ綔鍘熺悊
緙栬瘧鍣ㄦ垨姹囩紪紼嬪簭灝嗘簮浠g爜杞崲涓烘満鍣ㄤ唬鐮侊紝騫惰緭鍑哄璞¤皝鐨勩傚璞℃枃浠朵腑鍖呭惈絎﹀彿錛堝嚱鏁版垨鍙橀噺錛夛紝榪欎簺絎﹀彿鏈夌殑鍦ㄦ湰妯″潡瀹氫箟鐨勶紝鏈夌殑鍦ㄥ叾浠栨ā鍧楀畾涔夌殑錛岄摼鎺ュ櫒灝卞湪閾炬帴瀵硅薄鏂囦歡鏃舵妸榪欎簺鏈畾涔夌殑絎﹀彿涓庡畾涔夊畠鐨勬ā鍧楀搴旇搗鏉ャ?
b. 閾炬帴欏哄簭
鏈夊簱鍜屽綊妗f枃浠舵椂 閾炬帴綆楁硶鏄笉涓鏍風(fēng)殑銆?nbsp;
閾炬帴鍣ㄥ弬鏁伴『搴忓緢閲嶈錛屽浜庣紪璇戝崟鍏冿紙濡傚璞℃枃浠跺拰搴擄級(jí)鍜屾悳绱㈣礬寰勬潵璇撮兘鏄姝ゃ?
c. C++涓嬌鐢–浠g爜鏃訛紝鐢╡xtern c{} 鎶奀浠g爜鍖呰涓涓嬨?
鍏充簬 c++絎﹀彿鍜屽悕縐版敼緙栵細(xì)C++鍏佽閲嶈澆鍑芥暟錛屼負(fù)浜?jiǎn)鐢熸垚C++浠g爜鍏冪礌鐨勫敮涓絎﹀彿錛岀紪璇戝櫒浣夸竴縐嶇О涓哄悕縐版敼緙栵紙name mangling錛夌殑鎶鏈紝瀹冨皢瀵硅薄鐨勫噯紜鏍艱鏄庯紙濡備細(xì)鍛樺悕絀洪棿鍜屽嚱鏁板弬鏁扮殑涓暟鍙?qiáng)绫诲瀷锛?jí)緙栫爜鍒扮鍙蜂腑銆傦紙鍙互鐢╟++filt瑙f瀽鍑烘潵~ eg: c++filt _Z9factoriali鐨勭粨鏋滀負(fù)factorial(int)錛?
d. 鐜鍙橀噺
LD_LIBRARY_PATH浼?xì)濯?jiǎng)鍝嶅姩鎬佸姞杞界殑搴擄紝鐢↙DD鍙互鐪嬪埌紼嬪簭渚濊禆鍝釜鍔ㄦ佸簱
4. 鑷姩鍖栨祴璇?
璁╀竴鍒囪嚜鍔ㄥ寲璧鋒潵銆傚鏋滈噸澶嶇殑鍋氫竴浠朵簨錛屽氨寰堟湁蹇呰鑰冭檻鑷姩鍖栦簡(jiǎn)銆?
5. 鍏充簬閭d簺鎬紓鐨勯敊璇?
鍦ㄤ竴浜涙樉鑰屾槗瑙佹湁鍐呭瓨闂鐨勬儏鍐典笅錛屽錛氶棿姝囨晠闅滃拰鏃犳硶瑙i噴鐨勯殢鏈鴻涓猴紝榪欐椂鑰冭檻浣跨敤鍐呭瓨璋冭瘯鍣ㄤ簡(jiǎn)錛?
濡倂algrind錛屽緢濂界敤錛屼篃寰堢畝鍗曘?
valgrind –tool=massif your_program 榪涜鍐呭瓨鍓栨瀽錛堟嫻嬪唴瀛樺垎閰嶆儏鍐碉紝浼樺寲鍐呭瓨?shù)娇鐢ㄥQ?
valgrind –tool=memcheck your_program 榪涜鍐呭瓨?gòu)個(gè)鏌ワ紙媯(gè)嫻嬫棤鏁堢殑鍐欒闂紝媯(gè)嫻嬪鏈垵濮嬪寲鐨勫唴瀛樼殑璇誨彇鎿嶄綔錛屾嫻嬪唴瀛樻硠闇茬瓑錛?
valgrind –tool=helgrind your_program 鏌ユ壘绔炰簤鏉′歡錛屽彲浠ョ敤鏉ヨ緟鍔╄皟璇曞綰跨▼紼嬪簭
valgrid –-db-attac=yes鐨勫姛鑳藉緢濂界敤錛屽彲浠ュ皢鍐呭瓨楂樺害鍣ㄥ拰婧愪唬鐮佹祴璇曞櫒錛堝gdb錛夌粨鍚堣搗鏉ワ紝榪欐牱灝卞彲浠ュ嵆鏃舵煡鐪嬪綋鏃剁殑鍙橀噺鐨勫鹼紝寰堝ソ鐢紒
6. 闈?rùn)鎬佹鏌ュ櫒
浣滀負(fù)甯歌杞歡鏋勫緩榪囩▼涓殑涓閮ㄥ垎榪愯錛岀敤浜庢煡鎵句竴浜涘彲閫氳繃闈?rùn)鎬佹簮浠g爜鍒嗘瀽鍙戠幇鐨勭壒瀹歜ug銆?
7. 鍏充簬榪愯鏃跺墫鏋愬伐鍏?
涓嶈緙栧啓鑷繁鐨勮繍琛屾椂鍓栨瀽鏃跺伐鍏鳳細(xì)鑷繁闇炲弸浜戞湅涓鐨勫墫鏋?宸ュ叿閫氬父浣跨敤緋葷粺璋冪敤time()鎴朿time()鏉ユ祴閲忔椂闂淬傝繖浜涚郴緇熻皟鐢ㄧ殑闂鏄紑閿寰堥珮錛岃屼笖鍑嗙‘搴︿綆銆傚彟澶勫湪鍓栨瀽鏈熼棿瑕佹敹闆嗗ぇ閲忔暟鎹紝鍙兘浼?xì)濯?jiǎng)鍝嶇▼搴忔湰韜殑琛屼負(fù)銆?
8. 鐜鍙橀噺
濡傜▼搴忕殑琛屼負(fù)鍙兘 渚濊禆浜庡綋鍓嶅伐浣滅洰褰曘傚湪linux涓婏紝鐩綍琚敞鍐屽埌鐜鍙橀噺CWD涓娿傝繖涓猙ug紕板埌榪囷紝榪樺鑷翠簡(jiǎn)姝婚攣銆?
9. 璇誨彇鎭板綋鐨勯敊璇秷鎭?
鏌愪釜鍦版柟鍑洪敊鏃訛紝婊″睆閮芥槸閿欒娑堟伅鏃訛紝搴旇閲嶇偣鍏蟲(chóng)敞鍝簺娑堟伅錛?
Answer: 棣栧厛鍑虹幇鐨勯偅浜涙秷鎭紒鍥犱負(fù)鍚庨潰鐨勬秷鎭湁鍙兘鏄墠闈㈠鑷寸殑銆傝繖鍜岀紪璇戝嚭閿欐椂鐨勬儏鏅竴鑷達(dá)細(xì)緙栬瘧閿欒鏈夊緢澶氾紝鎴戜滑鑲畾浼?xì)鐩磋鍦板幷d鎵劇涓涓嚭閿欑殑 鍦版柟錛岃皝鐭ラ亾鏄笉鏄皯浜?jiǎn)涓嫭鍙峰D嚧鍚庨潰涓榪炰覆鐨勯敊璇?
10. bug涓嶄細(xì)鑷姩娑堝け
濡傛灉鏌愪釜鐗堟湰鏈塨ug錛寀pdate鍚庯紝bug娑堝け浜?jiǎn)锛?#8220;鐪熷ソ錛?#8221;錛屼竴瀹氳寮勬竻妤歜ug鍑虹幇鐨勫師鍥犳槸浠涔堛備互鍓嶉亣鍒拌繃涓涓猙ug錛屽鍔犱竴鏉rintf璇彞鍚庯紝bug娑堝け浜?jiǎn)锛佹渶鍚庡彂鐜伴棶棰樻槸鏁扮粍瓚婄晫浜?jiǎn)锛岃屼慨鏀規(guī)簮浠g爜浼?xì)瀵艰嚧浠g爜娈靛Q屾暟鎹鐨勫竷灞絳夋敼鍙橈紝鎵浠ヤ細(xì)瀵艱嚧鍋跺皵瀵廣傦紙榪欑鎯呭喌鍙互姹傚姪浜庡唴瀛樿皟璇曞伐鍏鋒垨鑰呴潤(rùn)鎬佹鏌ョ殑宸ュ叿錛?
11. 瀛︿範(fàn)浣跨敤gcc, gdb,strace 絳夊伐鍏楓傦紙鐔熸?zhèn)変互鍚庡彲浠ュ啀鎸栨帢鎸栨帢锛屽彲鑳芥湁鎯婂枩锛?jí)
12. cvs/svn commit涔嬪墠涓瀹氳diff涓涓嬶紝鐪嬪仛浜?jiǎn)鍝簺淇敼锛屼互閬垮厤涓崬畯蹇?jī)鍒犳帀涓浜涗笢瑗垮悗錛岀劧鍚?#8221;琚彁浜?#8221;浜?jiǎn)銆?
鏈鍚庯紝鏈寮哄ぇ鐨勫伐鍏蜂笉鍦ㄨ綆楁満涓紝鑰屾槸璋冭瘯鑰呯殑鍒ゆ柇鍔涘拰鍒嗘瀽鎶宸с?/p>
鍙傝冭祫鏂欙細(xì)
1. 銆婅蔣浠惰皟璇曞疄鎴樸嬶細(xì)http://book.douban.com/subject/4231293/
if璇彞閲岀殑var鍙橀噺緇忔浛鎹㈠悗鍙樹(shù)負(fù) if [ = "y" ]錛屼簺鏃跺綋鐒朵細(xì)鍑洪敊銆?br />hex108@Gentoo ~ $ cat test.sh #!/bin/sh var= if [ $var = "y" ] ;then echo "yes" fi
hex108@Gentoo ~ $ ./test.sh
./test.sh: line 3: [: =: unary operator expected
ps:鐜板湪鍐欒剼鏈殑鏃跺欏懼悜浜庝嬌鐢╬erl,鑰岃緝?yōu)畱鋴社敤shell 錛屽洜涓哄浜庣粡甯鎬嬌鐢ㄧ殑鑴氭湰錛屽彲鑳戒細(xì)緇忓父闇瑕佸瀹冧笉鍋滃湴榪涜鏀硅繘錛屾參鎱㈢殑錛岀▼搴忚秺鏉ヨ秺澶э紝璇ヨ冭檻閲嶆瀯浜?jiǎn)锛?nbsp; 姝ゆ椂鎵嶄細(xì)鍙戠幇perl(python絳?#8220;鐪熸鐨?#8221;鑴氭湰璇█)姣攕hell鐩稿鏉ヨ鏇村ソ閲嶆瀯銆?/p>
鍥涳紟 浠g爜涓嬭澆
svn checkout http://regexp.googlecode.com/svn/trunk/ regexp-read-only