簡體   English   中英

在gdb中遞歸sizeof?

[英]Recursive sizeof in gdb?

是否可以使用gdb或其他工具找到某種結構/類的總大小,包括所有可訪問指針成員指向的內存? 有一個基本的sizeof,但是這不考慮作為指針的成員的大小,僅考慮指針的大小本身。 因此,也許更清楚地講,我想要的是sizeof操作,該操作將為每個指針成員添加一個指針成員的大小和由該指針指向的內存的大小(以此類推以進行進一步的嵌套)。

我可以接受近似值,絕對精度是不必要的。

我更喜歡支持c ++的解決方案,但是與c搭配使用的解決方案總比沒有好。 不過,我假設假設有解決方案,那么大多數解決方案都可能同時適用於這兩種解決方案。

希望這種描述是有意義的,謝謝您對如何完成此任務的任何建議。

gdb中沒有內置的方法可以做到這一點。 我也不知道有另一個預罐裝工具可以做到這一點。

但是,我認為使用Python腳本功能為gdb編寫代碼非常容易。 至少,如果您使用的是“常規”數據結構,那么這是正確的。 在某些情況下,無法使用gdb易於獲得的信息來執行此操作。 例如,如果您有一個包含“ void *”的結構,則無法僅使用debuginfo來知道其指向什么。 有時也可以用晦澀難懂的樣式編寫類,以防止自動發現-libstdc ++中有幾個這樣的類。

如果您想走得更遠,則可以改編gdb-heap項目,該項目可以讓您挖掘有關“ void *”案例和其他案例的信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM