Posted on 2010-12-24 22:22
S.l.e!ep.¢% 閱讀(877)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
Unix
[轉(zhuǎn)]配置GDB以支持查看stl容器數(shù)據(jù)
2009-09-08 10:04
http://blog.chinaunix.net/u1/44543/showart_1953788.html ? 2. #cat dbinit_stl_views-1.03.txt >> ~/.gdbinit ? 3. 若正處于gdb中,運(yùn)行命令: ?? (gdb) source ~/.gdbinit ? 4. 例如,如下代碼: bugging.cpp #include<vector> usingnamespacestd;
int main() { vector<int> vec; vec.push_back(2); vec.push_back(3); vec.push_back(4); return 0; }
|
? 編譯: ? #g++-o bugging -g bugging.cpp
|
gdb調(diào)試: # gdb bugging GNU gdb 6.8 Copyright (C) 2008 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and"show warranty"for details. This GDB was configured as "i486-slackware-linux"... (gdb) help pvector Prints std::vector<T> information. Syntax: pvector <vector><idx1><idx2> Note: idx, idx1 and idx2 must be in acceptable range [0..<vector>.size()-1]. Examples: pvector v - Prints vector content, size, capacity and T typedef pvector v 0 - Prints element[idx] from vector pvector v 1 2 - Prints elements in range [idx1..idx2] from vector (gdb)break main Breakpoint 1 at 0x80485c6:file bugging.cpp,line 6. (gdb) run Starting program:/root/learn/c++/bugging
Breakpoint 1, main () at bugging.cpp:6 6????????vector<int> vec; (gdb) n 7????????vec.push_back(2); (gdb) 8????????vec.push_back(3); (gdb) pvector Prints std::vector<T> information. Syntax: pvector <vector><idx1><idx2> Note: idx, idx1 and idx2 must be in acceptable range [0..<vector>.size()-1]. Examples: pvector v - Prints vector content, size, capacity and T typedef pvector v 0 - Prints element[idx] from vector pvector v 1 2 - Prints elements in range [idx1..idx2] from vector (gdb) pvector vec elem[0]: $1 = 2 Vector size = 1 Vector capacity = 1 Element type =int* (gdb) n 9????????vec.push_back(4); (gdb) 10????????return 0; (gdb) pvector vec elem[0]: $2 = 2 elem[1]: $3 = 3 elem[2]: $4 = 4 Vector size = 3 Vector capacity = 4 Element type =int* (gdb)
|
5. 默認(rèn)情況下gdb不能用[]查看stl容器的數(shù)據(jù)元素,提示如下錯(cuò)誤: (gdb) print vec[0] One of the arguments you tried to pass to operator[] could not be converted to what the function wants.
|
|