2013-07-24 190 views
0

我有一個描述位圖的結構。它看起來像這樣限制GDB輸出長度

struct bitmap { 
    int XSize; 
    int YSize; 
    unsigned char *pData; 
}; 

當這種結構的情況下被初始化pData指向成千上萬的類似隨機的,但不爲零字節。當我打印結構的實例時,GDB顯示了很多無意義的字節。這非常耗時。當這種變量的disp處於活動狀態時,每個步驟的輸出都會延遲調試。

是否有限制輸出長度的GDB選項?

當字節無意義時,我可以將pData的類型更改爲void *。但是由於該結構在預編譯庫中使用,因此該類型不能更改。 GDB用於printdisp的類型是否可以「覆蓋」?

+0

重複回答http://stackoverflow.com/questions/233328/怎麼辦,我打印最全價值OF- a-long-string-in-gdb –

+0

不是重複的,而是相關的。 – harper

回答

1

正如Paul在this question中指出的答案給出了允許無限長度的正確命令。

爲了限制所需的命令

set print elements n 

其中n是元件的最大數目的長度。將n設置爲0會提供無限的長度。

0

設置print elements 4會的pData字符數限制爲4,但它會限制的所有其他字符串和數組,這可能是很煩人(如print filename會產生/tmp...當實際值是/tmp/foobar

一個可能更好的方法是編寫struct bitmap一個Python漂亮的打印機(假設你有足夠新GDB)。查看該怎麼做this answer