2010-08-12 35 views
3

我正在做嵌入式軟件開發。就本質而言,我有3個不同的應用程序同時運行,保證在不同範圍的虛擬地址上運行,例如如何通過使用GDB加載多個符號定義來調試多個應用程序?

App 1運行在0x10000000 - 0x20000000,App2運行在0x20000000 - 0x30000000等等。

通常GDB似乎只接受一個符號定義文件。但在這種情況下,我可能會加載全部3個定義而不會發生衝突。我怎麼能做到這一點?其次,假設我有3個應用程序運行在相同的虛擬範圍內,但每個應用程序在運行時都有所不同,例如,假設一個地址位置包含其地址空間ID,這使我知道哪個應用程序是當時裝載。

我怎麼能告訴GDB加載所有3個符號定義,但基於這些信息自動切換定義?

回答

1

你試過

add-symbol-file app1 0x10000000 
add-symbol-file app2 0x20000000 
add-symbol-file app3 0x30000000 

由於所有的地址都不同,在同一時間的應用程序都裝,我不太明白你所說的「哪個應用程序在那時裝載線索是什麼意思」。

如果實際上應用程序未同時加載,GDB overlay support可能會有所幫助。

+0

如果我不知道地址,即0x10000000怎麼辦?地址是什麼? – 2013-12-04 17:46:57

相關問題