由於沒有人幫助解答,因此這是一個追加到this問題的附加細節。我克隆了最新的QEMU回購協議,並遵循this教程爲arm-softmmu創建了一個Hello World程序。我使用幫助函數追蹤了TCG,而不是基本塊中的寄存器,但是我遇到了跟蹤功能,我想嘗試一下。在documentation之後,取消註釋跟蹤事件文件後,這是my/tmp/events文件。如何使用QEMU的簡單跟蹤後端?
exec_tb
exec_tb_exit
跟蹤事件文件中,除去禁止的關鍵字,以使跟蹤的部分是:
# TCG related tracing (mostly disabled by default)
# cpu-exec.c
exec_tb(void *tb, uintptr_t pc) "tb:%p pc=0x%"PRIxPTR
exec_tb_nocache(void *tb, uintptr_t pc) "tb:%p pc=0x%"PRIxPTR
exec_tb_exit(void *last_tb, unsigned int flags) "tb:%p flags=%x"
這是我如何配置和運行QEMU的可執行文件:
./configure --target-list=arm-softmmu --enable-trace-backends=simple
make
./qemu-system-arm -trace events=/tmp/events -M versatilepb -m 256M -nographic -kernel ~/FileName.bin
從arm-softmmu目錄中,我以這種方式運行簡單的跟蹤python腳本:
./scripts/simpletrace.py trace-events arm-softmmu/trace-*pid* | head
我在這裏做錯了什麼嗎?因爲我絕對沒有收到任何信息。即使是跟蹤後的二進制文件也只是一小段(當然是亂碼)。我預計實際上會有足夠大的痕跡。