新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ARM匯編指令調試方法

        ARM匯編指令調試方法

        作者: 時間:2016-11-09 來源:網絡 收藏
        學習ARM匯編時,少不了對ARM匯編指令的調試。作為支持多語言的調試器,gdb自然是較好的選擇。調試器工作時,一般通過修改代碼段的內容構造trap軟中斷指令,實現程序的暫停和程序執行狀態的監控。為了在x86平臺上執行ARM指令,可以使用qemu模擬器執行ARM匯編指令。

        一、準備ARM匯編程序

        首先,我們構造一段簡單的ARM匯編程序作為測試代碼main.s。

        本文引用地址:http://www.104case.com/article/201611/317876.htm
        .globl _start_start:mov R0,#0swi	0x00901

        以上匯編指令完成了0號系統調用exit的調用。mov指令將系統調用號傳入寄存器R0,然后使用0x00901軟中斷陷入系統調用。

        為了運行ARM匯編代碼,需要使用交叉編譯器arm-linux-gcc對ARM匯編代碼進行編譯。下載交叉編譯器安裝完畢后,對ARM匯編代碼進行編譯。

        arm-linux-gcc main.s -o main -nostdlib

        編譯選項“-nostdlib”表示不使用任何運行時庫文件,編譯生成的可執行文件main只能在ARM體系結構的系統上運行。

        二、編譯安裝qemu模擬器

        為了x86的Linux系統內運行ARM體系結構的可執行程序,需要安裝qemu模擬器。

        首先下載qemu源碼,然后保證系統已經安裝了flex和bison。

        編譯安裝qemu。

        ./configure --prefix=/usrsudo make && make install

        然后使用qemu的ARM模擬器執行ARM程序。

        qemu ./main

        三、編譯安裝arm-gdb

        為了調試ARM程序,需要使用gdb的源碼編譯生成arm-gdb。

        首先下載gdb源代碼,編譯安裝。

        ./configure --target=arm-linux --prefix=/usr/localsudo make && make install

        為了和系統的gdb避免沖突,我們將gdb的安裝目錄安裝到/usr/local,然后建立軟鏈接即可。

        ln -s /usr/bin/arm-gdb /usr/local/gdb/gdb

        之后便可以使用arm-gdb命令調試ARM程序了。

        四、調試ARM程序

        首先使用qemu打開遠程調試端口。

        qemu-arm -g 1024 ./main

        然后導出環境變量QEMU_GDB。

        export QEMU_GDB=/usr/local/gdb

        最后,進入gdb調試。

        arm-gdb ./main

        進入arm-gdb后,首先連接遠程調試端口。

        (gdb) target remote localhost:1024

        然后使用gdb常用的調試命令調試代碼即可。

        (gdb) disassemble			// 查看反匯編(gdb) x /8xw 0x0808e		// 查看內存(gdb) info register			// 查看寄存器(gdb) continue				// 繼續執行(gdb) stepi					// 匯編級逐過程(gdb) nexti					// 匯編級逐語句



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 铜鼓县| 桃源县| 明星| 大荔县| 广宗县| 菏泽市| 衢州市| 襄垣县| 东乡族自治县| 盱眙县| 合水县| 临清市| 巩义市| 平原县| 观塘区| 江都市| 修文县| 凉城县| 华阴市| 肃北| 柘荣县| 山阳县| 吴忠市| 滨海县| 隆昌县| 雅江县| 巩留县| 甘德县| 手游| 林州市| 宜城市| 诸城市| 来宾市| 南阳市| 始兴县| 南靖县| 偃师市| 乌拉特中旗| 南宫市| 永善县| 淮北市|