[질문]dbx[gbd] 디버깅시 문제점발생.
Source Example
=================
#include <iostream>
#include <vector>
#include <map>
#include <string>
using namespace std;
typedef struct name{
int x;
string cellname;
}NAME;
int main()
{
vector<NAME*> kkk;
vector<string> cellname;
cellname.push_back(string("AA"));
cellname.push_back(string("BB"));
cellname.push_back(string("CC"));
cellname.push_back(string("DD"));
cellname.push_back(string("EE"));
cellname.push_back(string("FF"));
cellname.push_back(string("GG"));
cellname.push_back(string("HH"));
cellname.push_back(string("II"));
cellname.push_back(string("JJ"));
for( int i=0; i < 10; i ++ ){
NAME *name=new NAME;
name->x=i;
name->cellname=cellname[i];
kkk.push_back(name);
}
for( int i=0; i < kkk.size(); i++){
cout << kkk[i]->cellname << endl;
}
}
==============================
실행결과
========================
AA
BB
CC
DD
EE
FF
GG
HH
II
JJ
==================
cout로 프린트 하면 제대로 string을 볼수가 있는데
cout << kkk[i]->cellname << endl;
이라인들 break point로 지정한후에 print kkk[i]->cellname을 하면
아래와 같은 메세지를 뿌립니다.
단순히 디버거의 문제점으로 생각돼는데 어떻게 생각하시는지요.
꼭 이런경우를 써야돼고 디버깅도 해야 됀다고 가정할때 이런문제점이
발생하면 어떻게 해결해야 하나요.
그럼 읽어주셔셔 감사드리고요 좋은 답변 부탁드립니다.
아참 dbx는 포인터를 인식못하고 gdb는 memory를 access할수 없다고
나옵니다.
========================================
dbx vector
Reading vector
Reading ld.so.1
Reading sysinfo-hid.so
Reading libCrun.so.1
Reading libm.so.1
Reading libw.so.1
Reading libc.so.1
Reading libucb.so.1
Reading libresolv.so.2
Reading libsocket.so.1
Reading libnsl.so.1
Reading libelf.so.1
Reading libdl.so.1
Reading libmp.so.2
Reading libc_psr.so.1
(/usr/local/Forte/SUNWspro/bin/dbx.exe) sa 36
(2) stop at "vector.cpp":36
(/usr/local/Forte/SUNWspro/bin/dbx.exe) r
Running: vector
(process id 14288)
stopped in main at line 36 in file "vector.cpp"
36 cout << kkk[i]->cellname << endl;
(/usr/local/Forte/SUNWspro/bin/dbx.exe) p kkk[i]->cellname
kkk.operator[](i).cellname = {
__data_ = {
__data_ = 0x59c60 ""
}
__nullref = struct __rwstd::__null_string_ref_rep<char,std::char_traits<char>,std::allocator<char>,__rwstd::__string_ref_rep<std::allocator<char> > > /* STATIC CLASS */
}
==========================
더 하나 추가로 print kkk.operator[](i)->cellname 이렇게
type해서 print하면 제대로 됀 값을 프린트 할수 있습니다.
댓글 달기