2013-04-15 44 views
8

我在GNU/Linux上使用gcc,並且安裝了libc和libstd ++的調試文件和頭文件。但我不知道如何告訴gdb使用它們的源代碼,特別是調試到libstd ++。 libstdC++本身的源代碼似乎是以複雜的結構提供的。我認爲目錄命令是正確的選擇。我在這裏使用Debian/Ubuntu,並將apt-get source libstdC++ 6的源代碼下載到我的主目錄中。通過libstdC++調試

我很確定我不需要爲Fedora(幾年前)採取特殊措施。也許Fedora是以特殊的方式爲此準備的。所以我會對一般的說明感到高興,這些說明適合於每個發行版。

謝謝

更新
我想通了,我需要另外-g-D_GLIBCXX_DEBUG編譯,所以編譯命令如下$ g++ -o test test.cpp -g -D_GLIBCXX_DEBUG

而且我得到了警告失蹤漂亮打印機,我解決了如下描述: http://gcc.gnu.org/onlinedocs/libstdc++/manual/debug.html#debug.gdb

現在我可以調試到的libstdC++,但我總是得到這個消息:

Breakpoint 1, main() at test.cpp:9 
9  string str = "str"; 
(gdb) s 
std::allocator<char>::allocator (this=0x7fffffffe1e0) 
    at /build/buildd/gcc-4.7-4.7.2/build/x86_64-linux-gnu/libstdc++-v3/include/bits/allocator.h:104 
104 /build/buildd/gcc-4.7-4.7.2/build/x86_64-linux-gnu/libstdc++-v3/include/bits/allocator.h: No such file or directory. 
(gdb) s 
std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string (
    this=0x7fffffffe1c0, __s=0x402930 "str", __a=...) 
    at /usr/include/c++/4.7/bits/basic_string.tcc:217 
217     __s + npos, __a), __a) 

我不需要將gdb中的目錄設置爲我下載的源代碼(我認爲它通過我的主目錄搜索)。所以我想我需要一個不同的命令來解決這個問題,並找到「設置替代路徑」,並指出它/home/username/gcc-4.7-4.7.2/gcc-4.7.2/libstdc++-v3但我doesn沒有工作。爲什麼gdb在完全錯誤的地方查找allocator.h

+0

你確切的'set substitute-path'命令是什麼? –

回答