QtCreator에서 객체 디버깅을 하지 못할 때(not accessible)
다음과 같은 코드가 있다고 가정한다.
#include <cstring>
struct Obj {
static const int Size = 65537;
char buf[Size];
Obj() {
memset(buf, 0, Size);
}
};
int main() {
Obj obj;
}
QtCreator에서 member function(예: constructor)에서 break point를 걸어 넣고 디버깅을 하다 보면 Locals 창에서 해당 객체의 멤버 변수들이 보이지 않고 not accessible이라는 메시지가 뜨는 경우가 있다.
이는 객체의 크기가 65536 바이트보다 클 때 이러한 현상이 나타난다. 따라서 QtCreator에서는 객체의 크기를 65536 바이트 이하로 해야 제대로 된 디버깅이 가능하다.
객체 내부에서 특정 버퍼를 가지고 처리해야 할 때에는 버퍼를 내부 배열로 선언하지 말고 포인터로 선언하여 실시간으로 allocation해서 사용하도록 한다.