2016-05-31 89 views
0

我開始研究gdb python擴展,需要一些幫助。如何更新打印機的C++向量,以便它可以打印每個元素

下面是一個例子:

#include <vector> 

int main() { 
    using namespace std; 

    vector<int> v; 
    v.push_back(1); 
    v.push_back(2); 
    v.push_back(3); 

    return 0; 
} 

這裏是我GDB內部使用的命令:

(gdb) set print pretty 
(gdb) n 
7   v.push_back(1); 
(gdb) 
8   v.push_back(2); 
(gdb) 
9   v.push_back(3); 
(gdb) 
11  return 0; 
(gdb) p v 
$1 = std::vector of length 3, capacity 4 = {1, 2, 3} 

你可以看到,矢量打印機會打印出一些簡單的信息。我想知道如何破解矢量打印機,以便打印出所有的元素?

此外,我的最終目標是打印出我的數據類型的矢量。我不知道如何打印個別數據,但是如果您能指出連接打印機的個人數據和矢量的方向,我會很感激。

謝謝!

[UPDATE] 我當然今天已經工作太辛苦,值將被打印出來,我沒看出來,嘆了口氣。抱歉。

我的下一步是爲我的數據類型編寫打印機,因此一旦我註冊了該打印機,矢量打印機就可以自動使用它來打印單個數據,對嗎?

+0

也許我錯過了一些東西,但是看起來你提到的「簡單信息」包含了矢量內容 - 「{1,2,3}」。 –

+0

看來它正在打印出元素? – Kundor

+0

查看此答案:http://stackoverflow.com/a/10758845/1865694 –

回答

0

我的下一步是寫我的數據類型的打印機,所以一旦我有 該打印機註冊,矢量打印機可自動用來 打印個人數據,是這樣嗎?

是的,沒錯。一個精心編寫的容器漂亮的打印機(和libstdC++打印機當然有資格,如果我可以自己這樣說的話)將返回一個可迭代的對象,該對象產生表示所包含數據的gdb.Value實例。這讓gdb也可以將漂亮的打印機應用於這些值。