wth0722 发表于 2014-08-25 22:24

GDB如何去看物理記憶體

各位先進好

想請教各位當MMU啟動之後

在使用GDB時,可否能指定看物理記憶體?

Tinnal 发表于 2014-08-25 22:35

回复 1# wth0722
你是香港还是台湾的?
物理地址通过/dev/mem去看吧。打开/dev/mem然后进行mmap就可以访问了。


   

wth0722 发表于 2014-08-26 10:12

回复 2# Tinnal

我是台灣人

你有點誤會我的意思了

我想要的是直接可以透過GDB去修改或是看物理位置裡面的內容

就像是trace32的A:0x12345678這個指令



   

Tinnal 发表于 2014-08-26 12:00

回复 3# wth0722

你是否可以把你的问题再描述一下。

你指的“物理位置”是指内存的物理地址(physical address)还是虚拟地址(virtual address )?

trace32是硬件的仿真器,他看到是硬件的内存,它不区分操作系统和应用程序,把他们都当无操作系统的程序来进行调试了。如果CPU打开MMU后,认像当中它看到的,也已经是virtual address了。如果要确定性的访问某一个physical address, 需要自己跟具页表转换。特别的,如果是内核线性区的内存,可以看一下对应内核的__pa宏,通过virtual address 减一个固定值就是physical address了。

GDB是一款Linux应用程序的调试软件,一般只会用来调试应用。一般我们不会关心程程序分配到的物理地址,因为应用分配到的页框(Page frame)是不确定的,我们一般只关系他们的虚拟地址。如果要改变某个虚拟地址的值,
可以通过 set var 变量名 = 变量值 得方式。 如查想改变的不是一个变量,而是一个直接的虚拟地址 可以采用如 set *(char *) 变量地址 = 变量值 的方式。

如果想把GDB拿来做硬件仿真器的后端,可以和jlink等仿真器配合使用, jlink有一个服务程序可以仿真成为GDB的一个remote-target。jlink提供了很多类trace32的直接操作CPU的命令。


只能没有弄清楚你真正想干什么,只能猜测。

   

polejo 发表于 2014-09-01 14:21

我觉得LZ是想在GDB中看已经映射好物理区间内存储的内容吧。
我也遇到过这样的问题,只能在进程在的时候看。
coredump文件,那个映射过来的虚拟地址看不到。

MeRcy_PM 发表于 2014-09-03 17:03

说的是怎么直接查看内存吗?
p *0x地址
这样?

wth0722 发表于 2014-09-10 09:53

回复 4#你是否可以把你的問題再描述一下。

你指的「物理位置」是指內存的物理地址(physical address)還是虛擬地址(virtual address )?

trace32是硬件的仿真器,他看到是硬件的內存,它不區分操作系統和應用程序,把他們都當無操作系統的程序來進行調試了。如果CPU打開MMU後,認像當中它看到的,也已經是virtual address了。如果要確定性的訪問某一個physical address, 需要自己跟具頁表轉換。特別的,如果是內核線性區的內存,可以看一下對應內核的__pa宏,通過virtual address 減一個固定值就是physical address了。

GDB是一款Linux應用程序的調試軟件,一般只會用來調試應用。一般我們不會關心程程序分配到的物理地址,因為應用分配到的頁框(Page frame)是不確定的,我們一般只關係他們的虛擬地址。如果要改變某個虛擬地址的值,
可以通過 set var 變量名 = 變量值 得方式。 如查想改變的不是一個變量,而是一個直接的虛擬地址 可以採用如 set *(char *) 變量地址 = 變量值 的方式。

如果想把GDB拿來做硬件仿真器的後端,可以和jlink等仿真器配合使用, jlink有一個服務程序可以仿真成為GDB的一個remote-target。jlink提供了很多類trace32的直接操作CPU的命令。


只能沒有弄清楚你真正想幹什麼,只能猜測。
Tinnal


我所謂的物理位置就是Physical address

我想要的就是從GDB上直接看Physical memory上面的內容

目前是直接使用Qemu+gdb,並沒有接其他硬件訪真器,所以想要問各位這樣可以看到物理位置嗎

wth0722 发表于 2014-09-10 09:55

回复 6# MeRcy_PM


你得到他了

就是想要P * 0x位置   <--這位置希望是physical address,不是Virtual address

   

wangell2012 发表于 2014-09-10 10:31

我不知道gdb是否有.不过你自己可以使用mmap函数写一个操作物理地址的应用.

amarant 发表于 2014-09-10 11:16

qemu有命令直接看物理地址
先按alt+ctrl+2 进入qemu的调试界面,好像是xp指令可以直接看物理地址的内容
页: [1] 2
查看完整版本: GDB如何去看物理記憶體