×ðÁú¿­Ê±

LinuxÏÂʹÓÃGDBµ÷ÊÔǶÈëʽARM»ã±àÓÅ»¯µÄ³ÌÐòµÄ³£¼ûÉèÖÃÒªÁì

linuxÏÂʹÓÃgdbµ÷ÊÔǶÈëʽarm»ã±àÓÅ»¯µÄ³ÌÐòµÄ³£¼ûÉèÖÃÒªÁì

ÔÚǶÈëʽϵͳ¿ª·¢ÖÐ £¬ARM¼Ü¹¹µÄоƬÊǷǾ­³£¼ûµÄÑ¡Ôñ¡£¶øÔÚARM»ã±à³ÌÐòµÄ±àдÀú³ÌÖÐ £¬ÓÅ»¯ÊDz»¿É»òȱµÄÒ»²¿·Ö £¬ÓÉÓÚËü¿ÉÒÔÏÔÖøÌá¸ß³ÌÐòµÄÐÔÄÜ¡£È»¶ø £¬ÓÉÓÚÓÅ»¯Óë´úÂëµÄ¼ò»¯ºÍÖØ×éÓйØ £¬ÕâÒ²¸øµ÷ÊÔ´øÀ´ÁËÒ»¶¨µÄÄÑÌâ¡£±¾ÎĽ«ÏÈÈÝÔõÑùʹÓÃGDBÀ´µ÷ÊÔǶÈëʽARM»ã±àÓÅ»¯µÄ³ÌÐò £¬²¢ÌṩһЩ³£¼ûµÄÉèÖÃÒªÁìºÍ´úÂëʾÀý¡£

Ò»¡¢ÇéÐÎÉèÖÃ

×°ÖÃARM½»Ö¯±àÒ빤¾ßÁ´

Ê×ÏÈ £¬ÎÒÃÇÐèҪװÖÃARM½»Ö¯±àÒ빤¾ßÁ´ £¬ÒÔ±ãÔÚLinuxÇéÐÎϱàÒëARM»ã±à³ÌÐò¡£³£ÓõÄARM½»Ö¯±àÒ빤¾ßÁ´ÓÐgcc £¬binutilsµÈ¡£¿ÉÒÔͨ¹ýÒÔÏÂÏÂÁîÀ´×°Öãº

sudo apt-get install gcc-arm-linux-gnueabi

µÇ¼ºó¸´ÖÆ

±àдARM»ã±àÓÅ»¯µÄ³ÌÐò

½ÓÏÂÀ´ £¬±àдһ¸ö¼òÆÓµÄARM»ã±àÓÅ»¯³ÌÐò×÷ΪʾÀý¡£ÏÂÃæÊÇÒ»¸ö¼Ó·¨º¯ÊýµÄʾÀý´úÂ룺

.global add
.thumb_func
add:
    mov r2, r0
    add r0, r1, r0
    bx lr

µÇ¼ºó¸´ÖÆ

ÒÔÉÏ´úÂëʵÏÖÁËÁ½¸öÊýµÄ¼Ó·¨²Ù×÷ £¬²¢Ê¹ÓÃbx lrÖ¸Áî·µ»ØŲÓÃÕß¡£

±àÒëºÍÔËÐгÌÐò

ʹÓý»Ö¯±àÒ빤¾ßÁ´½«»ã±à´úÂë±àÒë³É¿ÉÖ´ÐÐÎļþ £¬ÀýÈ磺

arm-linux-gnueabi-gcc -o test test.s

µÇ¼ºó¸´ÖÆ

È»ºó £¬ÔËÐÐÌìÉúµÄ¿ÉÖ´ÐÐÎļþ£º

qemu-arm ./test

µÇ¼ºó¸´ÖÆ

¶þ¡¢Ê¹ÓÃGDBµ÷ÊÔÓÅ»¯µÄARM»ã±à³ÌÐò

ÉèÖÃÆô¶¯GDB

¿ÉÒÔͨ¹ýÒÔÏÂÏÂÁîÆô¶¯GDB £¬²¢¼ÓÔØ¿ÉÖ´ÐÐÎļþ£º

arm-linux-gnueabi-gdb -q test

µÇ¼ºó¸´ÖÆ

ÉèÖöϵã

ÔÚGDBÖÐ £¬¿ÉÒÔʹÓÃbreakÏÂÁîÉèÖöϵã¡£ÀýÈç £¬ÎÒÃÇ¿ÉÒÔÉèÖöϵãÔÚº¯ÊýµÄÈë¿Ú´¦£º

(gdb) break add

µÇ¼ºó¸´ÖÆ

Æô¶¯³ÌÐòµ÷ÊÔ

ʹÓÃrunÏÂÁîÆô¶¯³ÌÐòµ÷ÊÔ£º

(gdb) run

µÇ¼ºó¸´ÖÆ

³ÌÐò½«ÔÚÉèÖõĶϵ㴦ͣÏÂÀ´¡£

µ¥²½Ö´ÐгÌÐò

ʹÓÃstepiÏÂÁî¾ÙÐе¥²½Ö´ÐгÌÐò £¬¿ÉÒÔÖðÌõÖ´ÐÐARM»ã±àÖ¸Áî¡£ÀýÈ磺

(gdb) stepi

µÇ¼ºó¸´ÖÆ

Éó²é¼Ä´æÆ÷ºÍÄÚ´æ

ÔÚµ÷ÊÔÀú³ÌÖÐ £¬ÎÒÃÇ¿ÉÒÔʹÓÃinfo registersÏÂÁîÀ´Éó²é¼Ä´æÆ÷µÄÖµ £¬Ê¹ÓÃxÏÂÁîÀ´Éó²éÄÚ´æµÄÄÚÈÝ¡£ÀýÈ磺

(gdb) info registers
(gdb) x/4xw $sp

µÇ¼ºó¸´ÖÆ

µ÷ÊÔ¿¢ÊÂ

ÔÚµ÷ÊÔ¿¢Êºó £¬¿ÉÒÔʹÓÃquitÏÂÁîÍ˳öGDB¡£

Èý¡¢×¢ÖØÊÂÏî

ʹÓþ²Ì¬Á´½Ó¿â

ÔÚ±àÒëÓÅ»¯µÄARM»ã±à³ÌÐòʱ £¬Ó¦¸ÃÈ·±£¾²Ì¬Á´½ÓËùÓÐÐèÒªµÄ¿âÎļþ £¬ÒÔ×èÖ¹ÔÚµ÷ÊÔÀú³ÌÖзºÆðÕÒ²»µ½ÎļþµÄ¹ýʧ¡£

ÓÅ»¯Ñ¡Ïî

ÔÚ±àÒëÓÅ»¯µÄARM»ã±à³ÌÐòʱ £¬¿ÉÒÔʹÓÃÊʵ±µÄÓÅ»¯Ñ¡Ïî £¬ Èç-O2À´Ìá¸ß³ÌÐòÐÔÄÜ¡£¿ÉÊÇ £¬ÔÚµ÷ÊÔʱӦ¸ÃʹÓÃ-O0À´½ûÓÃÓÅ»¯ £¬ÒÔ±ã¸üºÃµØ¸ú×Ù³ÌÐòµÄÖ´ÐС£

ÉèÖ÷ûºÅ±í

ΪÁËÄܹ»ÔÚGDBÖÐ׼ȷÏÔʾԴ´úÂë £¬Ó¦¸ÃÔÚ±àÒëʱͨ¹ý-gÑ¡ÏîÌìÉú·ûºÅ±í £¬ÀýÈ磺

arm-linux-gnueabi-gcc -g -o test test.s

µÇ¼ºó¸´ÖÆ

ÕâÑù £¬ÔÚGDBÖоÍÄܹ»×¼È·ÏÔʾԴ´úÂëºÍº¯ÊýÃû¡£

×ܽá

ͨ¹ý±¾ÎÄ £¬ÎÒÃÇÏàʶÁËÔõÑùÔÚLinuxÏÂʹÓÃGDBµ÷ÊÔÓÅ»¯µÄǶÈëʽARM»ã±à³ÌÐò¡£ÔÚµ÷ÊÔÓÅ»¯µÄ³ÌÐòʱ £¬ÎÒÃÇÐèҪעÖØÉèÖÃÑ¡ÏîºÍʹÓõ÷ÊÔÏÂÁî¡£ÕâЩ¼¼ÇÉ¿ÉÒÔ×ÊÖúÎÒÃǸüºÃµØÃ÷È·ºÍµ÷ÊÔÓÅ»¯µÄARM»ã±à³ÌÐò¡£Ï£Íû¶ÁÕßÄܹ»Í¨¹ý±¾ÎÄѧµ½Ò»Ð©ÊÊÓõĵ÷ÊÔ¼¼ÇÉ £¬´Ó¶ø¸üºÃµØ¿ª·¢ºÍµ÷ÊÔARMǶÈëʽϵͳ¡£

ÒÔÉϾÍÊÇLinuxÏÂʹÓÃGDBµ÷ÊÔǶÈëʽARM»ã±àÓÅ»¯µÄ³ÌÐòµÄ³£¼ûÉèÖÃÒªÁìµÄÏêϸÄÚÈÝ £¬¸ü¶àÇë¹Ø×¢±¾ÍøÄÚÆäËüÏà¹ØÎÄÕ£¡

ÃâÔð˵Ã÷£ºÒÔÉÏչʾÄÚÈÝȪԴÓÚÏàÖúýÌå¡¢ÆóÒµ»ú¹¹¡¢ÍøÓÑÌṩ»òÍøÂçÍøÂçÕûÀí £¬°æȨÕùÒéÓë±¾Õ¾ÎÞ¹Ø £¬ÎÄÕÂÉæ¼°¿´·¨Óë¿´·¨²»´ú±í×ðÁú¿­Ê±ÂËÓÍ»úÍø¹Ù·½Ì¬¶È £¬Çë¶ÁÕß½ö×ö²Î¿¼¡£±¾ÎĽӴýתÔØ £¬×ªÔØÇë˵Ã÷À´ÓÉ¡£ÈôÄúÒÔΪ±¾ÎÄÇÖÕ¼ÁËÄúµÄ°æȨÐÅÏ¢ £¬»òÄú·¢Ã÷¸ÃÄÚÈÝÓÐÈκÎÉæ¼°ÓÐÎ¥¹«µÂ¡¢Ã°·¸Ö´·¨µÈÎ¥·¨ÐÅÏ¢ £¬ÇëÄúÁ¬Ã¦ÁªÏµ×ðÁú¿­Ê±ÊµÊ±ÐÞÕý»òɾ³ý¡£

Ïà¹ØÐÂÎÅ

ÁªÏµ×ðÁú¿­Ê±

18523999891

¿É΢ÐÅÔÚÏß×Éѯ

ÊÂÇéʱ¼ä£ºÖÜÒ»ÖÁÖÜÎå £¬9:30-18:30 £¬½ÚãåÈÕÐÝÏ¢

QR code
¡¾ÍøÕ¾µØͼ¡¿¡¾sitemap¡¿