2013-07-30 98 views
5

我想聲明數組方便變量,如是否可以將一個GDB便利變量聲明爲一個數組?

set $list[10] 

但我得到一個語法錯誤。

是否可以使用便利變量創建一個向量?

我可以使用指針,如果我能找到一個絕對區域內存GDB可以使用目標程序將不會使用。

哦,順便說一句,我沒有一個符號表,我正在使用一個不兼容GDB的編譯器調試目標程序。

GDB的跨目標版本我不支持python。

回答

2

我認爲這是唯一可能的,如果你在劣勢分配內存。也就是說,嘗試類似:

set $list = (int *) malloc (10 * sizeof (int)) 

更改類型以適合。

另一個類似的選項是使用{...}功能。我不能確定,但​​我認爲這可能會在某些情況下爲劣勢分配記憶。總之,請嘗試:

print {1,2,3,4}[2] 

我得到

$1 = 3 
+0

我會嘗試{...}功能。我不能使用malloc(),因爲我沒有符號表,因此gdb不知道malloc()在哪裏。我可以創建一個便利的變量$ malloc,其地址爲malloc。這可能會起作用。 – KeithSmith

+0

如果你有任何可用的地址,你可以使用{TYPE}類型來處理它。例如:set $ var = {int [4]}&main。或者類似的東西,請參閱手冊 - 我無法記住此擴展的確切語法。 –

+0

@TomTromey我不認爲只有通過手動分配內存的方式才能實現。看:代碼'set $ test =「Hello」','perror($ test)'可以正常工作。你甚至可以把地址。 –

相關問題