ValgrindÓ¦Óûù´¡ Ô¤·ÀC³ÌÐòÄÚ´æÐ¹Â¶
³õдC/C++³ÌÐò£¬±È½ÏÍ·ÌÛµÄÓ¦¸Ã¾ÍÊÇÄÚ´æÎÊÌ⣬±¾Æª½éÉÜÒ»¸ö°ïÖú³ÌÐòÔ±µ÷ÊÔ¶¨Î»³£¼ûÄÚ´æÎÊÌ⣻µ±È»Õâ¸öÈÎÎñ¿ÉÒÔͨ¹ýGDBÍê³É£¨²Î¼û£ºGDBʹÓÃÏê½â£©
¿ªÊ¼±¾ÆªÇ°£¬ÇëÏÈÈ·Èϵ÷ÊÔ³ÌÐò²ÉÓÃDebugģʽ±àÒ루±àÒëʱ¿ªÆô-gÑ¡Ï£»
1¡¢°²×°
ÏÂÔØµØÖ·£ºhttp://valgrind.org/downloads/
Çл»µ½ValgrindĿ¼£¬²¢Ö´ÐÐÏÂÃæµÄÃüÁ
./configure
make
make check
make install
2¡¢µ÷ÊÔ
¼ÙÉèÄãµÄ³ÌÐòÖ´ÐÐÃüÁîÊÇ£ºmyprog arg1 arg2
ʹÓÃValgrindµ÷ÊÔʱִÐУºvalgrind --leak-check=yes myprog arg1 arg2
3¡¢¾ÙÀý£º
¼ÙÉèÄãµÄ³ÌÐòÓÐÈçÏÂÆ¬¶Î£º
#include <stdlib.h>
void f(void)
{
int* x = malloc(10 * sizeof(int));
x[10] = 0; // problem 1: heap block overrun
} // problem 2: memory leak -- x not freed
int main(void)
{
f();
return 0;
}
Ö´Ðкó»áÊÕµ½ÈçÏÂÐÅÏ¢£º
==19182== Invalid write of size 4
==19182== at 0x804838F: f (example.c:6)
==19182== by 0x80483AB: main (example.c:11)
==19182== Address 0x1BA45050 is 0 bytes after a block of size 40 alloc'd
==19182== at 0x1B8FF5CD: malloc (vg_replace_malloc.c:130)
==19182== by 0x8048385: f (example.c:5)
==19182== by 0x80483AB: main (example.c:11)
1¡¢“==19182==”±íʾ½ø³ÌID
2¡¢“Invalid write of size 4”ÏÔʾ´íÎóÀàÐÍ£¬ÕâÀïÊÇÓÉÓÚдÄÚ´æ¶Ñ¿éÒç³ö
3¡¢µÚ¶þÐпªÊ¼ÏÔʾ·¢ÉúÎÊÌâµÄλÖã¬È磺“example.c:6”±íʾexample.cµÄµÚ6ÐдúÂë£¬ÕÆÎÕ¸ú×Ù˳Ðò¶Ôµ÷ÊÔºÜÓаïÖú£¬Í¨³£¶¥²¿ÊÇ×îÄڲ㣬µ×²¿ÊÇ×îÍâ²ã
ÉÏËßÀý×ÓÖл¹´æÔÚÄÚ²ãй¶µÄÎÊÌ⣬Äã»á¿´µ½ÈçϵÄÐÅÏ¢£º
==19182== 40 bytes in 1 blocks are definitely lost in loss record 1 of 1
==19182== at 0x1B8FF5CD: malloc (vg_replace_malloc.c:130)
==19182== by 0x8048385: f (a.c:5)
==19182== by 0x80483AB: main (a.c:11)
1¡¢“40 bytes in 1 blocks are definitely lost in loss record 1 of 1” չʾÁËValgrindµÄ·ÖÎö°üÀ¨£¬“definitely lost”-¾ø¶ÔËðʧ£¬“probably lost”-¿ÉÄÜËðʧ
Ïà¹ØÎĵµ£º
nokia wiki£ºhttp://developer.symbian.org/wiki/index.php/Open_C_and_Open_C%2B%2B_Technical_Overview/zh-hans
symbianÉÏ¿ª·¢opencʱÐèҪעÒâµÄÎÊÌâ
http://blog.csdn.net/sizhiguo/archive/2009/05/21/4206138.aspx
µÚÒ»£ºÈçprintf¡¢sprint¡¢Îļþ²Ù×÷¡¢socket²Ù×÷µÈ£¬Ä£ÄâÆ÷ÆÁÄ»¶¼»á³öÏְׯÁµÈ´ý£¬²¢ÇÒÊÇÒ»Ö±ÏÂÈ¥¡£ ......
´´½¨Ð½ø³Ì£ºforkº¯Êý
1.1.1. forkº¯Êý¸Éʲô£¿
#include <sys/types.h>
#include <unistd.h>
pid_t fork(void);
‘fork()’º¯ÊýÓÃÓÚ´ÓÒÑ´æÔÚ½ø³ÌÖд´½¨Ò»¸öнø³Ì¡£Ð½ø³Ì³ÆÎª×Ó½ ......
һƪ½²¶ÔÆë±È½ÏºÃµÄÎÄÕ£¬×ªÌùÈçÏÂ:
´óÖ±ê×¢Ò»¶þ:
1.ÄÚ´æ¶ÔÆë:¼ÆËã»úϵͳ¶Ô»ù±¾ÀàÐÍÊý¾ÝÔÚÄÚ´æÖдæ·ÅµÄλÖÃÓÐÏÞÖÆ£¬ËüÃÇ»áÒªÇóÕâЩÊý¾ÝµÄÊ×µØÖ·µÄÖµÊÇij¸öÊýk(ͨ³£ËüΪ4»ò8)µÄ±¶ÊýkÔò±»³ÆÎª¸ÃÊý¾ÝÀàÐÍµÄ¶ÔÆëÄ£Êý(alignment modulus)
2.²»Í¬±àÒëÆ÷ĬÈϵÄ×î´ó¶ÔÆë×Ö½ÚÊýÊDz»Ò»ÑùµÄ,±ÈÈçvc==8,gcc==4,¿ÉÒÔͨ¹ ......
1£¬´«Öµµ÷ÓÃ
ÿ¸öʵ²Î¶¼ÊÇÒ»¸ö±í´ïʽ£¬¶¼ÓÐÒ»¸öÖµ¡£Í¨¹ý¸´ÖƱí´ïʽֵµÄ·½Ê½£¬½«Æä´æ´¢ÔÚÒ»¸öÁÙʱµ¥ÔªÖУ¬²¢°Ñ¶ÔÓ¦µÄÐÎʽ²ÎÊý×÷ΪÕâ¸öµ¥ÔªµÄ±êʶ·û¡£¸Ã´«µÝʵ²Î·½·¨±»³Æ×÷´«Öµµ÷Óá£call by value
2£¬Ô¤´¦ÀíÆ÷
±àÒëÆ÷°Ñ³ÌÐòת»»ÎªÄ¿±ê´úÂë֮ǰÏÈÓÉCÔ¤´¦ÀíÆ÷´¦ÀíÔ´Îļþ¡£
CÔ´´úÂë->Ô¤´¦ÀíÆ÷->±àÒëÆ÷
Ô¤´¦ÀíÆ÷Ö´Ðг ......
GPIO£¨General Purpose Input/OutputµÄËõд£©¾ÍÊÇоƬµÄÒý½Å£¬Òý½ÅÊǿɱà³ÌµÄ¿É¶ÔÒý½ÅµÄ¹¤×÷ģʽ½øÐÐÉèÖãºÊäÈëģʽ(¼ì²âÊäÈëÐźÅ)£¬Êä³öģʽ(Êä³ö0»ò1)£¬¸ß×è״̬(³£ÓÃÓÚADת»»)£¬»¹ÓнûÖ¹»òÔÊÐíÉÏÄÚ²¿ÏÂÀµç×è(ÉÏÀ£º¹Ü½Åͨ¹ýµç×è½Ó¸ßµçƽ£¬ÏÂÀ£º¹Ü½Åͨ¹ýµç×è½ÓµØ£¬Ò²¿ÉÒÔÍⲿ½ÓÉÏÀ»òÏÂÀµç×è)£¬»¹ÓйܽŸ´Óõȹ¦ÄÜ£¬¼´ ......