色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

QEMU+GDB調試ARM程序

我快閉嘴 ? 來源:嵌入式ARM和Linux ? 作者:嵌入式ARM和Linux ? 2022-10-08 09:17 ? 次閱讀

通過GDB調試代碼的便利性無需贅言。我們直接以調試meta-hypervisor為示例進行說明。

準備工作

代碼

代碼請參考meta-hypervisor和meta-demos。代碼里邊有詳細的說明文檔。

QEMU

安裝qemu-system-aarch64,版本要求大于5.0。

啟動QEMU

啟動QEMU的命令:

qemu_cmd:=qemu-system-aarch64
run:platform
@$(qemu_cmd)-nographic
-Mvirt,secure=on,virtualization=on,gic-version=3
-cpucortex-a53-smp4-m4G
-bios$(atf-fip)
-deviceloader,file="$(meta_image)",addr=0x50000000,force-raw=on
-devicevirtio-net-device,netdev=net0
-netdevuser,id=net0,net=192.168.42.0/24,hostfwd=tcp5555-:22
-devicevirtio-serial-device-chardevpty,id=serial3-devicevirtconsole,chardev=serial3
-S-s

-bios $(atf-fip)

atf-fip是指編譯出的ATF和U-boot的二進制文件。

-device loader,file="$(meta_image)",addr=0x50000000,force-raw=on

meta_image指的是meta-hypervisor的二進制代碼。addr=0x50000000指的是加載到物理內存0x50000000地址處。

-M virt,secure=on,virtualization=on,gic-version=3

指定需要使用的machine類型,virt是qemu提供的一個通用machine,可以同時支持arm32和arm64(部分cortex不支持),-M help可以列出所有支持的machine列表。

secure=on是支持安全空間。

virtualization=on是支持虛擬化擴展。

gic-version=3是支持GICv3通用中斷控制器類型。

-cpu cortex-a53 -smp 4 -m 4G

-cpu cortex-a53:指定模擬的CPU類型。可以使用-cpu help,查看當前支持的CPU類型。

-m 4G:指定內存大小。

-smp 4:指定CPU核的數量,默認是1。

-s -S:可選,調試參數。-S,可以讓qemu加載image到指定位置后停止運行,等待gdb連接;-s, 等價于--gdb tcp::1234,啟動gdb server并默認監聽1234端口

啟動gdb客戶端

再打開一個命令行窗口:

gdb-multiarch--tui./bin/qemu-aarch64-virt/meta.elf

啟動后的界面,如下所示:

66e43c96-469d-11ed-96c9-dac502259ad0.png

連接gdb-server:

(gdb)targetremotelocalhost:1234

在cpu_init函數打breakpoint。然后,執行命令continue。回到gdb-server端,輸入go 0x50000000開始運行程序。

gdb客戶端,執行單步執行,最后發現是mem_init_vm_config(config_addr)函數執行出現問題。打印變量print/x config_addr,結果是1。而我們配置平臺的物理內存是從0x40000000處開始的。這樣,等于我們訪問非法物理地址。

用VSCode可視化環境調試

vscode中集成了gdb功能,我們可以用它來圖形化的調試meta-hypervisor。

首先,我們按下ctrl+alt+D,調出debug窗口,選擇創建launch.json文件,添加vscode的gdb配置文件(.vscode/launch.json):

{
//UseIntelliSensetolearnaboutpossibleattributes.
//Hovertoviewdescriptionsofexistingattributes.
//Formoreinformation,visit:https://go.microsoft.com/fwlink/?linkid=830387
"version":"0.2.0",
"configurations":[
{
"name":"(gdb-multiarch)Launch",
"type":"cppdbg",
"request":"launch",
"program":"${workspaceFolder}/wrkdir/srcs/meta/bin/qemu-aarch64-virt/meta.elf",
"cwd":"${workspaceFolder}",
"MIMode":"gdb",
"miDebuggerPath":"/usr/bin/gdb-multiarch",
"miDebuggerServerAddress":"localhost:1234"
}

]
}

這里對幾個重點參數做一些說明:

program: 調試的符號文件

miDebuggerPath:gdb的路徑, 這里需要注意的是,由于我們是arm64內核,因此需要用gdb-multiarch來進行調試

miDebuggerServerAddress:對端地址,qemu會默認使用1234這個端口

配置完成之后,可以直接啟動GDB, 連接上meta-hypervisor(gdb-server端的啟動順序參考前面的一段),界面如下所示:

6709ce3e-469d-11ed-96c9-dac502259ad0.png

在vscode中,可以設置斷點,進行單步調試。可以查看變量、通用寄存器、系統寄存器、浮點寄存器等。還可以查看調用棧的過程。具體如下紅色方框和文字注釋所示:

67301486-469d-11ed-96c9-dac502259ad0.png

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • ARM
    ARM
    +關注

    關注

    134

    文章

    9084

    瀏覽量

    367387
  • 調試
    +關注

    關注

    7

    文章

    578

    瀏覽量

    33923
  • qemu
    +關注

    關注

    0

    文章

    57

    瀏覽量

    5354

原文標題:ARM深入理解-hypervisor調試方法二(QEMU+GDB調試ARM程序)

文章出處:【微信號:嵌入式ARM和Linux,微信公眾號:嵌入式ARM和Linux】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    pyocd調試ARM芯片,Ubuntu 安裝arm-none-eabi-gdb

    介紹如果在安裝arm-none-eabi-gdb,在vscode下面對arm的單片機進行調試
    的頭像 發表于 06-07 09:00 ?2.9w次閱讀
    pyocd<b class='flag-5'>調試</b><b class='flag-5'>ARM</b>芯片,Ubuntu 安裝<b class='flag-5'>arm-none-eabi-gdb</b>

    使用GDB調試Linux應用程序

    本篇講解使用GDB調試Linux應用程序,以下以 `hellowld.c` 為例介紹 GDB調試入門。
    發表于 06-27 15:48 ?462次閱讀

    RK3568-GDB程序調試方法說明

    RK3568-GDB程序調試方法說明
    的頭像 發表于 01-19 16:16 ?1825次閱讀
    RK3568-<b class='flag-5'>GDB</b><b class='flag-5'>程序</b><b class='flag-5'>調試</b>方法說明

    TLT507-GDB程序調試方法說明

    TLT507-GDB程序調試方法說明
    的頭像 發表于 01-26 10:11 ?972次閱讀
    TLT507-<b class='flag-5'>GDB</b><b class='flag-5'>程序</b><b class='flag-5'>調試</b>方法說明

    在Linux中如何使用gdb調試C程序

    通俗的講,GDB 可以讓你看到程序在執行過程時的內部流程,并幫你明確問題的所在。我們將在下一節通過一個有效的示例來討論 GDB 調試器的用法,但在此之前,我們先來探討一些之后對你有幫助
    發表于 04-28 15:37 ?1675次閱讀

    如何在Linux中使用gdb調試C程序

    如果你是 C/C++ 程序員,或者使用 Fortran 和 Modula-2 編程語言開發軟件,那么你將會很樂意知道有這么一款優秀的調試器 - GDB - 可以幫你更輕松地調試代碼 b
    發表于 05-16 14:45 ?786次閱讀
    如何在Linux中使用<b class='flag-5'>gdb</b><b class='flag-5'>調試</b>C<b class='flag-5'>程序</b>

    嵌入式Linux的GDB調試環境建立

    嵌入式Linux的GDB調試環境由Host和Target兩部分組成,Host端使用arm-linux-gdb,Target Board端使用gdbserver。這樣,應用程序
    發表于 04-02 14:33 ?518次閱讀

    使用 GDB 調試多進程程序

    是 Proc1 的子進程,Proc3 又是 Proc2 的子進程。如何使用 GDB 調試 proc2 或者 proc3 呢?實際上,GDB 沒有對多進程程序
    發表于 04-02 14:33 ?547次閱讀

    Linux應用的GDB調試的原理及過程分析

    GDB調試是應用程序在開發板上運行,然后在PC機上對開發板上得應用程序進行調試,PC機運行GDB
    發表于 03-05 09:44 ?3421次閱讀
    Linux應用的<b class='flag-5'>GDB</b><b class='flag-5'>調試</b>的原理及過程分析

    ARM平臺如何玩轉GDB遠程調試

    前言關于GDB工具GDB工具是GNU項目調試器,基于命令行使用。和其他的調試器一樣,可使用GDB工具單步運行
    的頭像 發表于 09-28 18:17 ?976次閱讀
    <b class='flag-5'>ARM</b>平臺如何玩轉<b class='flag-5'>GDB</b>遠程<b class='flag-5'>調試</b>?

    在ubuntu中調試GDB

    的 gcc 編譯器即可,注意需要加 -g 選項,才能使用 gdb 調試 arm-linux-gnueabihf-gcc gdbtest .c -o gdbtest -g //編譯測試程序
    的頭像 發表于 07-27 16:31 ?1053次閱讀
    在ubuntu中<b class='flag-5'>調試</b><b class='flag-5'>GDB</b>

    qemu-riscv在scode的gdb調試步驟

    qemu支持gdb調試,只需要在命令中添加 -s -S兩個參數即可,在bsp/qemu-riscv下已經有了qemu-dbg.sh,且加入了
    的頭像 發表于 09-28 10:54 ?1513次閱讀
    <b class='flag-5'>qemu</b>-riscv在scode的<b class='flag-5'>gdb</b><b class='flag-5'>調試</b>步驟

    GDB調試工具的原理

    一、GDB調試工具的原理 1.1 未執行進程調試 啟用gdb調試運行gdb ./test的時候,
    的頭像 發表于 11-09 17:04 ?936次閱讀
    <b class='flag-5'>GDB</b><b class='flag-5'>調試</b>工具的原理

    如何使用GDB調試工具

    在對應程序目錄中使用下面的命令 gdb test 2、調試已經開始運行的程序進程 調試已經開始運行的程序
    的頭像 發表于 11-09 17:17 ?847次閱讀
    如何使用<b class='flag-5'>GDB</b><b class='flag-5'>調試</b>工具

    如何使用linux下gdb調試python程序

    如何使用linux下gdb調試python程序? 在Linux下,可以使用GDB(GNU調試器)來調試
    的頭像 發表于 01-31 10:41 ?2577次閱讀
    主站蜘蛛池模板: 亚洲成人精品久久| 2020无码最新国产在线观看| 东京热影院| 欧美91精品久久久久网免费| 中文字幕欧美一区| 久久黄色网址| 亚洲中文热码在线视频| 国产欧美精品一区二区色综合| 乳色吐息在线观看全集免费观看 | 老司机午夜影院味味| 亚洲中文字幕在线第六区| 国产亚洲精品久久久久小| 晚夜免费禁用十大亏亏| 高清视频在线观看SEYEYE| 日本湿姝在线观看| www.青青草.com| 欧美三级aaa| WWW国产亚洲精品久久久日本| 免费毛片播放| 91九色精品国产免费| 毛片免费观看的视频在线| 中文字幕伊人香蕉在线| 啦啦啦视频在线观看WWW| 中文天堂www资源| 浪荡女天天不停挨CAO日常视| 中文字幕a有搜索网站| 久久久久琪琪精品色| 这里只有精品网| 国语92电影网午夜福利| 午夜影院视费x看| 成人影片迅雷下载| 亚洲精品电影久久久影院| 久久国产免费| 亚洲国产欧美在线人成aaaa20| 成人做视频免费| 日本XXXXZZX片免费观看| a视频在线看| 欧美午夜精品一区二区蜜桃 | 亚洲看片无码免费视频| 国产精品亚洲精品久久品| 99国产精品免费视频|