2017-09-08 15 views
-2

gdbを使用してコアをデバッグしています。私はフレームにいくつかの地図を印刷しようとしています。マップには、構造体へのポインタが値として含まれています。しかし、マップの一部が間違って印刷され、一部が正しく印刷されます。GdbがSTLマップからポインタを正しく表示しない

Eg: 
map1 < int, void* > 
map2 < int, A* > 

gdb> pmap map1 
10 0x7f2bbec0f4e0 

gdb> pmap map2 
20 0x7f2bbec00000 

map2からのポインタが正しく印刷されないのはなぜですか?

答えて

2

GDB pmapコマンドはありません。おそらく、あなたはthisのような長い時代遅れのstlviewsを使用しています。

最新のGDBディストリビューションには、python pretty-printersが付属しています。これはマップをうまく印刷できます。代わりにp map1p map2を試してください。

map2からのポインタが正しく印刷されないのはなぜですか?

map2が正しく印刷されていないという証拠は表示されていません。私達が知っているすべてのためにそれは単一の20, 0x7f2bbec00000要素を含んでいます。

P.S.これは偽になります。あなたは実際コードではなく、それの間違った表現を表示した場合、あなたがより多くの有益な答えを得るだろう、将来的には

std::map<int, void*> map1; 
std::map<int, A*> map2; 

map1 < int, void* > 
map2 < int, A* > 

あなたはおそらく意味があります。

関連する問題