(æžããã) #ã³ãŒããªãŒãã£ã³ã° ##ã³ãŒããªãŒãã£ã³ã°ã®ç®ç ### ç®æšã®æ±ºå® * æ°ãããã¿ãŒã³ * ã³ãŒãã£ã³ã°ã¹ã¿ã€ã« * èŠä»¶ãæºããæ¹æ³ * å®ç³ * èšèªæ©èœ * ã¢ã«ãŽãªãºã * ããŒã¿æ§é * ã¢ãŒããã¯ã㣠* ãã¶ã€ã³ãã¿ãŒã³ ## ã³ãŒããªãŒãã£ã³ã°ã®æ¹æ³ ### åºæ¬ * å°ããå®è¡ 1. å°ããªããã°ã©ã ããã«ãããŠå®è¡ããŠåäœãææ¡ãã 1. å°ããªå€æŽãå ãã 1. ããäœç³»çãªæ¹æ³ã§åŠã¶ããšãèãã(é¢é£æžç±ãããã¥ã¡ã³ãããã¬ãŒãã³ã°ã³ãŒã¹etc) * ïŒã€ã®ããæ¹ã«å·çããªã * æŠåšã¯æ²¢å±±ãã£ãŠãã * ããã㬠* ã·ã¹ãã ã³ãŒã«ãã¬ãŒãµ * SQLãã®ã³ã°æ©èœ * ãã±ãããã³ã 1. ããã¥ã¡ã³ããããå Žåã¯ããããå§ãã 1. å®éã«å©çšããŠã¿ã * ã·ã¹ãã ã³ãŒã« * ã¢ã«ãŽãªãºã * ã³ãŒãã·ãŒã±ã³ã¹ * ã¢ãŒããã¯ã㣠* ç®çãšé¢ä¿ãªãèŠçŽ ã¯ç¡èŠ * mainããèŠã * ç°¡åãªéšåããæ»ãã * 颿°ãçè§£ããããã« * ååããæ©èœãæšæž¬ * åé ã®ã³ã¡ã³ããèªã * 䜿ããæ¹ã調ã¹ã * ã³ãŒããèªã * ããã¥ã¡ã³ãã調ã¹ã ##ãããã° ###GDB ####åºæ¬æäœ èµ·å sudo gdb /usr/local/sbin/lighttpd gdbå
ã§configãæå®ããŠèµ·å(breakãã€ã³ããåã蟌ãå Žåã¯èµ·ååã«) r -D -f /Users/saitoumasakazu/src/lighttpd-1.4.18/doc/lighttpd.conf r -D -f lighttpd.conf ####break pointåã蟌㿠ãœãŒã¹ã« SIGTRAPãåãèŸŒãæ¹æ³ #include //signal.hãèªã¿èŸŒãã äžã§ raise(SIGTRAP); gdbãèµ·åãããããšã«åã蟌ã //颿°ãæå® b hoge ###ãœãŒã¹ã調ã¹ãããã®ããŒã« ããŒã« | æ©èœ -|- cb | Cããã°ã©ã ã®æŽåœ¢ããŒã« indent | åäžãªããŒã« cdecl | Cã®å®£èšãè§£èª cflow | ããã°ã©ã ã®åŒã³åºãé¢ä¿ã衚瀺 cscope | ãœãŒã¹ã³ãŒãå
ã®ã³ãŒãã®ç¹å®ã®èŠçŽ ãåŒã³åºã ctags | ã¿ã°ãã¡ã€ã«çæ vgrind | Cã®ããã°ã©ã ããã£ãè¯ãå°å· ###å®è¡ãã¡ã€ã«ã調ã¹ãããã®ããŒã« ããŒã« | æ©èœ -|- ldd(mac:otool) | å®è¡ã«å¿
èŠãªãã€ãããã¯ã©ã€ãã©ãªã®è¡šç€º nm | ãªããžã§ã¯ããã¡ã€ã«ã®ã·ã³ãã«ããŒãã«ã®è¡šç€º strings | ãã€ããªã«æ ŒçŽãããæååã衚瀺 sum | ãã¡ã€ã«ã®ãã§ãã¯ãµã ãšãããã¯æ°ã®èšç®ãïŒã€ã®ãã¡ã€ã«ã®æ¯èŒã«çšãã ###ãããã°ããŒã« strace, truss | ã·ã¹ãã ã³ãŒã«ã衚瀺ãããã°ã©ã ãäœãããŠãããããªã倱æãããã調ã¹ãã®ã«äŸ¿å© ããŒã« | æ©èœ -|- ps | ããã»ã¹ã®ç¶æ
ctrace | ãœãŒã¹ãã¡ã€ã«ãä¿®æ£ã㊠###æ§èœåäž ããŒã« | æ©èœ -|- gprof|ã³ãŒã«ã°ã©ãã®è§£æããŒã¿è¡šç€º prof|åã«ãŒãã³ã®å®è¡æé ### ã»ã°ã¡ã³ããŒã·ã§ã³ãšã©ãŒ #### åå * æ£ããå€ãæ ŒçŽãããŠããªããã€ã³ã¿ã§ã®åç
§ * nullãã€ã³ã¿ã§ã®åç
§ * ã¢ã¯ã»ã¹æš©éã®ãªããªããžã§ã¯ããžã®ã¢ã¯ã»ã¹ * ã¹ã¿ãã¯é åãããŒãé åã®äœ¿ãå°œãã ##Cåºç€ ### ã©ã€ãã©ãªããªã³ã¯ãããŒã #### ã³ã³ãã€ã«ãã㌠1. Cããªããã»ããµ 1. ããã³ããšã³ã(æ§æãæå³è§£æ) 1. ããã¯ãšã³ã(ã³ãŒãçæ) 1. ãªããã£ãã€ã¶ 1. ã¢ã»ã³ãã© 1. ãªã³ã¯ããŒã #### ãã€ãããã¯ãªã³ã¯ * å®è¡æã«å¿
èŠãªã©ã€ãã©ãªãåç
§ãã * å©çšã¡ãªãã * å°ããªå®è¡ãã¡ã€ã« * ã©ã€ãã©ãªã€ã¡ãŒãžãåå®è¡ããã°ã©ã ãå
±æ * äœææ¹æ³ * ldã«æž¡ããŠããã * åºæ¬çã«ã¹ã¿ãã£ãã¯ãªã³ã¯ã¯äœ¿ããªã * ã©ã€ãã©ãªããªã³ã¯ããããã®ïŒã€ã®ç§èš£ 1. åœåèŠçŽ * ãã€ãããã¯ã©ã€ãã©ãª : lib~.so * ã¹ã¿ãã£ãã¯ã©ã€ãã©ãª : lib~.a 1. ãªã³ã¯ããã©ã€ãã©ãªæå®æ¹æ³ * "-lããã"ã§æå® * libããã.so ãããŒãããã 1. ã³ã³ãã€ã©ãã©ã€ãã©ãªãèªã¿èŸŒã¿ã«è¡ããã£ã¬ã¯ã㪠* /usr/lib * ç°å¢å€æ° LD_LIBRARY_PATH, lD_RUN_PATH, _ (éæšå¥š) * ã³ã³ãã€ã©ãªãã·ã§ã³ -L 1. 䜿ã£ãŠããããããã¡ã€ã«åããã©ã€ãã©ãªåãæšæž¬ * ããããã¡ã€ã«åã¯ãã©ã€ãã©ãªãã¡ã€ã«ãšååãäžèŽããŠãããšã¯éããªã * #include ãèŠãŠã¿ã * 颿°ãmanã§èª¿ã¹ã 1. ã¹ã¿ãã£ãã¯ã©ã€ãã©ãªã®ãªã³ã¯ã¯ããã€ãããã¯ã©ã€ãã©ãªãããå¶éããããã®ã«ãªã * ã³ã³ãã€ã©ã®ã³ãã³ãã©ã€ã³ã§ã®ã©ã€ãã©ãªã®æå®é åºãéèŠãªæå³ãæã€ #### ã€ã³ã¿ãŒããŒãžã³ã° * ã¡ãœããã®ãªãŒããŒã©ã€ãã¿ãããªæã * ãªã¹ã¯ãé«ãã®ã§èŠæ³šæ #### ã©ã€ãã©ãª * ãã䜿ãããæ©èœãããããã颿°ãšããŠçšæ * äœãåºæ¥ãã©ã€ãã©ãªããããããããããç¥ã£ãŠããããšãéèŠ #### æšæºå
¥åºå颿° * ã§åŒã³åºãã * getchar,putchar,gets,puts,scanf,printfãªã©ãçšæãããŠãã ### ããããŒãã¡ã€ã« * 颿°ã®å®çŸ©ãªã©ãåé¢ãå
±éåãã ###å®£èš #### define * define æåå1 æåå2 ã§æååïŒãæåå2ã«å¯Ÿå¿ä»ããã #### const * å倿ã§ããªãå®£èš ### ããŒã¿å #### ãã€ã³ã¿ * HWã¬ãã«ã§èŠããšåãªãã¡ã¢ãªã¢ãã¬ã¹ * çšé * ãªã³ã¯ããŒã¿æ§é ã®äœæ * ãªã³ã¯ãªã¹ããããªãŒãã°ã©ãçã®ããŒã¿æ§é * ããŒã¿æ§é ã®åçå²ãåœãŠ * åç
§åŒã³åºã * 颿°ããåŒæ°ã«çµæãè¿ããããšããåŒæ°ã®ã³ããŒã«ãããªãŒããŒããããé²ããããšã * ããŒã¿èŠçŽ ãžã®ã¢ã¯ã»ã¹ * é
åèŠçŽ ã®ã¢ãã¬ã¹ã衚ããã€ã³ã¿ã§ç¹å®ã®ã€ã³ããã¯ã¹ã®äœçœ®ã«ããèŠçŽ ã«ã¢ã¯ã»ã¹ã§ãã * é
åèŠçŽ ã®ãã€ã³ãã«ãããæŒç®ãšãé
åã®ã€ã³ããã¯ã¹ã«ãããæŒç®ãæå³è«çãªã¬ãã«ã§å¯Ÿå¿ããŠãã * é
åã«ããåŒæ°ãšæ»ãå€ * 颿°ã®ãã€ã³ã¿ * 颿°ã®åŠçããã©ã¡ãŒã¿åããããã«å¥ã®é¢æ°ãåŒæ°ãšããŠå©çš * å¥ååç
§ * æåå * æååãªãã©ã«ã¯æåé
åãnullæåã§æ¢ãããã® * æåãã€ã³ã¿ãšæåé
åã®éãã«æ³šæ * ãã€ã¬ã¯ãã¡ã¢ãªã¢ã¯ã»ã¹ #### æ§é äœ * è€æ°ã®ããŒã¿èŠçŽ ãéããŠäžã€ã®åäœãšããŠæ±ããããã«ãããã® * çšé * ããŒã¿èŠçŽ ã®ã°ã«ãŒãå * 颿°ããè€æ°ã®ããŒã¿èŠçŽ ãè¿ã * ããŒã¿æ§é ã®ãããã³ã° * ãªããžã§ã¯ãæåããã°ã©ãã³ã° #### å
±çšäœ(union) * åãèšæ¶åãå
±çšããè€æ°ã®é
ç®ãïŒã€ã«ãŸãšãããã® * çšé * èšæ¶åãå¹ççã«ä»æ§ * 倿
ã®å®è£
* åããªããžã§ã¯ããå©çšããŠãæ§ã
ãªåãè¡šçŸ * æ§ã
ãªå
éšè¡šçŸã«ããæäœ #### åçã¡ã¢ãªå²ãåœãŠ * ããã°ã©ã ã®äœææç¹ã§ãµã€ãºãããã£ãŠããªãããŒã¿æ§é ãããã°ã©ã ã®å®è¡äžã«æé·ããããŒã¿æ§é ã¯ãå®è¡äžã«ãåçã«ãå²ãåœãŠãããã¡ã¢ãªã«èšæ¶ããã #### typedef * ç¬èªã®åãå®çŸ©ããããšãåºæ¥ã * äžåºŠå®çŸ©ããã°ã"å®çŸ©ããå 倿°å;"ã®åœ¢ã§å©çšã§ãã * æœè±¡åã«ããã³ãŒãã®å¯èªæ§ãé«ããçã®çšéã§çšãããã ### ããŒã¿æ§é #### ãã¯ã¿ * ïŒæ¬¡å
é
å * äžæèšæ¶ã«äœ¿ããããšããããã¡ãšåŒã°ããã * memsetãšmemcpyãé
åã®åæåãšé
åå
容ã®ã³ããŒã«ãã䜿ããã #### è¡åãšããŒãã« * æ§é äœãªã©ãããã(åã¯æ§é äœã¡ã³ããŒã«ããããè¡ã¯èŠçŽ ) #### ã¹ã¿ã㯠* LIFO(åŸå
¥ãåŸåºã) #### ãã¥ãŒ * FIFO(å
å
¥ãå
ã ã) #### ããã #### éå #### éåãªã¹ã * ãªã¹ãèŠçŽ ã衚çŸããæ§é äœããã€ã³ã¿ãéããŠé£çµãããã® #### ããªãŒ * åããŒãããããªãŒã®ã«ãŒããŸã§ã®çµè·¯ãäžã€ãããªããããªããæ¹ #### ã°ã©ã ### å®è¡æã®ããŒã¿æ§é #### ã»ã°ã¡ã³ã * é¢é£ããèŠçŽ ã§æ§æããããã€ããªã®åºç»ã®äº * å®è¡æãªã³ã«ããã®ãŸãŸããŒãã§ãããªããžã§ã¯ãã®ã€ã¡ãŒãž ##### stackã»ã°ã¡ã³ã * åŸå
¥ãå
åºãæ¹åŒã®ãã¥ãŒãå®çŸããããã®åçãªã¡ã¢ãªé å * å¿
èŠã«å¿ããŠåçã«æ¡å€§ãã * ã¹ã¿ãã¯å
ã®ããŒã¿ã¯èªç±ã«æ±ãã * äž»ãªçšé 1. 颿°å
ããŒã«ã«å€æ°ã®æ ŒçŽé å(auto倿°ãšåŒã°ãã) 1. æç¶ã掻åèšé²ã颿°ãã©ãããåŒã³åºããããïŒã¬ãžã¹ããªã«åãŸããªãã£ãåŒæ°ã察æ¯ãããã¬ãžã¹ããªã®å€ãªã©ã®æ ŒçŽ 1. äœæ¥å Žæãè€éãªåŒã®è©äŸ¡äžãªã© ##### dataã»ã°ã¡ã³ã * å¿
èŠã«å¿ããŠåçã«æ¡å€§ãããªããžã§ã¯ããšããŒããçšæãããŠãã * ããŒãé å * åçã«ã¢ãã±ãŒããããèšæ¶é åã(mallocã«ããã¢ãã±ãŒãããããã€ã³ã¿ãä»ããŠã¢ã¯ã»ã¹ãããé åã) * ã¡ã¢ãªãªãŒã¯ * mallocã§ç¢ºä¿ããé åã¯éæŸããŠãããªããšåŒãèµ·ãããã * æ€åºæ¹æ³ * swapã³ãã³ãã®å©çš * psã³ãã³ã ###ã¡ã¢ãªã®çè§£