2016-12-07 32 views
2

在我的fedora盒子上,我安裝了很多獨立的調試信息。在gdb會話中選擇調試信息文件的子集

須藤DNF debuginfo軟安裝<list of packets>

現在,如果我調試它需要很長時間,直到一些符號顯示或打印一些值一些簡單的代碼。很明顯,絕對需要評估所有已安裝的符號文件以獲取所有信息。

但是,如果我有一個問題,說像goocanvas我只希望有我的生成本地調試smbols用我自己編譯的代碼-g選擇一個lib和爲goocanvas庫調試的相關信息。

這種選擇如何實現?只有重命名調試信息文件的文件夾並生成所需的副本?也許作爲符號鏈接?或者在任何地方都有共同的選擇選項?

回答

2

您可以跳過共享庫中的所有調試信息,只加載goocanvas庫符號。這裏是如何做到這一點在gdb會話樣本:

[ ~]$ gdb -q /your/binary 
(gdb) set auto-solib-add off 
(gdb) start 

Temporary breakpoint 1, 0x000055555564edd0 in main() 
(gdb) sharedlibrary goocanvas 

gdb doc

如果你的程序中使用大量的與調試信息的共享庫是 需要大量的內存,可以通過防止自動加載來自 共享庫的符號來減少gdb內存佔用量。爲此,在 運行劣勢前鍵入set auto-solib-add off,然後將其調試符號 需要的調試符號加載到共享庫正則表達式中,其中regexp是一個常規的 表達式,該表達式與您希望成爲其符號的庫匹配加載了 。

又見此相關的問題:How to prevent GDB from loading debugging symbol for a (large) library?