2011-12-07 28 views
1

我還沒有能夠谷歌找到這個問題的確切答案,所以在這裏。在使用GDB進行調試時忽略標準庫和提升庫

在使用GDB逐步完成代碼時是否可以忽略庫?我試圖調試一個簡單的程序,但是我在這麼做的時候顯示了很多外設和無趣的代碼 - 我真的不感興趣調試標準庫或boost庫的archlinux實現。

當步進時,我希望GDB能夠直接運行,直到它碰到我自己的代碼 - 這樣的過濾器可能嗎?我正在使用emacs。

回答

2

我想你可以注意到,在發出你的step命令之前,你將會進入外部庫函數。最簡單的解決方案是在標記位於外部庫函數調用時發出next命令而不是step

+0

我還沒有測試過這個,但是在編寫composite.push_back(get_element(...))等複合語句時不會產生問題;? – Max

+0

當你第一次在那條線上時,你需要'step'進入'get_element',你應該第二次發出'next'。 – loudandclear

0

您可以從庫中調試符號strip您不打算調試。

strip --strip-debug <lib_file.a> 

重建你的應用程序,庫文件不會顯示在調試器中。因此,對你的lib調用的「步驟」將與GDB中的「next」相同。

OR

您也可以選擇不編譯的lib文件時,而不是有-g選項。

+0

我是否應該從我的發行版中包含的標準庫中去除調試符號?有沒有理由不? – Max