我在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?
你確切的'set substitute-path'命令是什麼? –