×ðÁú¿­Ê±¹ÙÍøµÇ¼

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
ÍøÕ¾µØͼ