2013-04-15 31 views
8

Tôi đang sử dụng gcc trên GNU/Linux và các tệp gỡ lỗi và tiêu đề của libc và libstd ++ được cài đặt. Nhưng tôi không biết làm thế nào để nói với gdb sử dụng mã nguồn của chúng, đặc biệt là để gỡ lỗi vào libstd ++. Mã nguồn của libstdC++ dường như được cung cấp trong một cấu trúc phức tạp. Tôi nghĩ rằng thư mục là lựa chọn đúng đắn. Tôi đang sử dụng ở đây Debian/Ubuntu và tải xuống mã nguồn với nguồn apt-get libstdC++ 6 vào thư mục chính của tôi.Gỡ lỗi thông qua libstdC++

Tôi chắc rằng tôi không cần thực hiện các bước đặc biệt cho việc này với Fedora (vài năm trước). Có lẽ Fedora đã chuẩn bị một cách đặc biệt cho việc này. Vì vậy, tôi sẽ vui mừng về các hướng dẫn chung, phù hợp với mọi phân phối.

Cảm ơn bạn

Cập nhật
tôi đã tìm ra, mà tôi cần phải biên dịch với -D_GLIBCXX_DEBUG ngoài -g, vì vậy biên dịch lệnh trông giống như $ g++ -o test test.cpp -g -D_GLIBCXX_DEBUG.

Hơn nữa tôi đã cảnh báo về việc thiếu máy in khá, mà tôi giải quyết như đã mô tả ở đây: http://gcc.gnu.org/onlinedocs/libstdc++/manual/debug.html#debug.gdb

Bây giờ tôi có thể gỡ lỗi vào libstdC++, nhưng tôi luôn luôn nhận tin nhắn này:

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) 

tôi không cần phải đặt thư mục trong gdb vào nguồn được tải xuống của tôi (tôi nghĩ rằng nó tìm kiếm qua thư mục chính của tôi). Vì vậy, tôi nghĩ rằng tôi cần một lệnh khác để sửa lỗi này và tìm thấy "thiết lập đường dẫn thay thế" và chỉ nó vào /home/username/gcc-4.7-4.7.2/gcc-4.7.2/libstdc++-v3 nhưng tôi không 't làm việc. Tại sao gdb tìm kiếm allocator.h ở địa điểm hoàn toàn sai?

+0

Lệnh 'set alternative-path' chính xác của bạn là gì? –

Trả lời

Các vấn đề liên quan