본문 바로가기

컴퓨터/디버깅32

디버깅 공지사항 이 곳에 작성되는 글들 중 '디버깅' 카테고리에 들어 가 있는 글들은, 디버깅을 하는 과정을 보여주기 위함이다. 즉, 이런 에러는 이렇게 처리하면 된다 가 아니라, 이런 에러는 이와 같은 생각의 과정을 거쳐서 이렇게 처리할 수 있었다 라는 것 보여주기 위함이다. 모든 에러에 대해 동일한 에러의 원인을 보여 주는 것은 불가능하다. 대신, 어떻게 에러를 해결해 나가는가를 살펴 보는 것은 충분히 확장/변용되어 다른 상황에도 적용될 수 있다고 생각한다. 2010. 5. 25.
no matching function for call to 다음과 같은 에러가 났다. 환경: GCC 4.1.2 20080704 (Red Hat 4.1.2-46) on CentOS 5.4 NR_stat.cpp: In function ‘void ttest(const std::vector&, const std::vector&, double&, double&)’: NR_stat.cpp:516: error: no matching function for call to ‘Beta::betai(double, double, double)’ NR_stat.cpp:240: note: candidates are: bool Beta::betai(double, double, double, double*) 에러의 내용을 살펴 보면, NR_stat.cpp 파일에 있는 함수 void ttes.. 2010. 5. 24.
for 문의 동작 순서 다음과 같은 곳에서 에러가 났다. 환경 : Visual C++ 9.0 (VS2008) on Windows XP SP2 수행하다 문제가 생긴 곳을 알려 주는 노란색 화살표가 가리키는 곳을 보면 range 를 검사하다 문제가 생긴 것 같다. 위 코드는 vector 파일이고, 보아 하니 operator-- 를 호출하는 과정에 에러가 난 것으로 보인다. 왜 그런지 다시 call stack 을 따라서 내가 작성해 놓은 코드로 가보면, 위와 같다. 403 번째 줄을 실행중이라는 것을 알 수 있는데, 그 줄에서 vector의 iterator 형 변수인 [pos_x]와 [pos_y]가 operator-- 를 호출하는 것을 볼 수 있고 이것은 위에서 살펴 본 코드 (vector 파일) 와 이야기가 맞아 떨어진다. ran.. 2010. 5. 19.
DC를 제대로 해제하지 않아서 생기는 문제 다음과 같은 에러가 났다. 환경 : Visual C++ 9.0 (VS2008) on Windows XP SP2 디버깅 모드로 실행시키고 있는 중이었기 때문에 위에서 다시 시도(R) 버튼을 눌러서 디버깅을 시작한다. 그러면 다음과 같이 breakpoint 를 trigger 했다는 메세지가 나오는데, 여기서 Break 를 누른다. 그러면 실제로 에러가 난 코드에서 멈추게 된다. 실제로 에러가 난 줄까지 어떤 호출경로를 통해서 들어갔는지 살펴 보기 위하여 Call Stack 을 살펴 본다. 지금의 경우는 다음과 같다. 보면은, IICGPerfusion2::save_map_information(~) --> CImage::~CImage() --> CImage::Destroy() --> CImage::Detach(.. 2010. 5. 19.