본문 바로가기

반응형

debugging

(6)
[Rust] Visual Studio Code에서 Rust 연동 들어가며 프로그래밍을 하는데 어떠한 에디터 도구를 이용하든 아무런 상관은 없다. 단순한 텍스트 에디터를 이용해도 되고 편집 부터 실시간 문법 체크, 빌드에서 디버깅 까지 한꺼번에 해결할 수 있는 IDE(Integrated Developement Enviroment)를 이용해도 된다. 물론 생산성 뿐만 아니라 정신 건강과 윤택한 워라밸면에서 일반 텍스트 에디터 보다는 IDE가 월등히 유리하다. 이번 포스트에서는 이런 IDE 중 마이크로 소프트사의 Visual Studio Code(이하 VS Code)를 기반으로 '러스트'와 연동하는 방법에 대해 살펴 보도록 하겠다. 러스트 설치 VS Code를 러스트와 연동하기 위해선 가장 먼지 러스트가 설치 되어 있어야 한다. 이미 러스트를 설치했다면 다음 섹션으로 넘어..
[C#] MiniDump 남기기 들어가며 추리 영화에서 살인 피해자들이 항상 다잉 메시지를 남기듯 우리의 어플리케이션도 어떤 이유로 죽게 되었는지 알릴 수 있는 '코어 덤프'라는 것을 남길 수 있다. 하지만 코어 덤프를 남기기 위해서는 최소한의 작업을 개발자가 해줘야만 한다.이번 포스트에서는 윈도우 플랫폼에서 C#으로 작성된 프로그램에서 코어 덤프를 남길 수 있는 방법에 대해 살펴 보도록 하겠다. 참고로 리눅스에서 코어 덤프를 남기는 방법은 [여기]를 참고하면 된다. 처리 되지 않은 예외 본격적인 내용에 앞서 간단한 개념 정도는 알고 넘어 가도록하자. 굳이 몰라도 코어 덤프를 남기는 데는 문제 없는 내용이니 궁금하지 않다면 다음 섹션으로 바로 넘어가도 괜찮다(바쁘신 분들은 [여기]의 전체 코드를 복붙해서 사용해도 상관 없다). '예외(..
Conditional Break point with string(char*) - 특정 문자열일 경우 브레이크 포인트 활성화 하기 이전 포스팅([도구의발견] - Break point)에서 Visual Studio 디버거의 브레이크 포인트를 사용하는 방법에 대해서 알아 보았다. 그 중 브레이크 포인트에 조건을 걸어 주는 방법(Conditional breakpoint)에 대해서도 알아 보았는데, 오늘은 conditional breakpoint의 한계와 우회방법(?)에 대해서 알아보겠다. [도구의발견] - Break point 의 내용 대로 하는 경우, 정수 값, 문자 값에 대해서는 조건문이 정상동작하지만, 문자열(char*, std::string) 같은 경우 전~혀 제대로 동작하지 않는다. 정확한 이유는 잘 모르겠지만, 그냥 나의 생각으로는 포인터 값을 주는 경우, 해당 포인터가 가리키고 있는 문자열을 비교하는 것이 아니라 포인터 자체..
Handle leak 찾기 이 글의 대상은 윈도우 프로그래밍에 대해서 어느 정도 이해를 하고 있는 사람들을 대상으로 합니다. 기본적으로 핸들과 커널 오브젝트에 대한 개념에 대해 알고 있어야 하며(모른다면 여기로), 디버깅에 대해서 약간의 기본적 지식을 가지고 계시는 것이 좋습니다. 본 포스트는 디버깅에 관련된 툴들의 사용법에 대해서 다루고 있으며, 자세한 사용법 보다는 기본적인 사용법위주로 문제 해결에 관련된 부분만 다루고 있습니다. 보다 자세한 정보를 원하시면 해당 툴에 관련된 링크를 따라 가시면 많은 도움이 될 것입니다. 프로그래밍을 하다 보면 원하든 원하지 않든(거의 이 경우가 대부분이만) 종종 자원을 흘리고 다니는 경우가 있다. 여기서 말하는 자원이란 것은 파일이든, 메모리든 핸들이든 여러가지가 될 수 있지만 오늘은 특히 ..
GDB Tutorial GDB Tutorial 디버거는 다른 프로그램을 라인 단위 또는 변수 단위로 실행 시키면서 메모리에서 일어나고 있는 일을들 확인 할 수 있는 프로그램이다. 그 중 가장 유명한 디버거로는 UNIX의 GDB가 있다. 다음의 링크에는 GDB에 관한 보다 자세한 온라인 문서가 있다(documentation for GDB online), 또는 man 페이지에서 보다 빨리 GDB에 대한 정보를 얻을 수 있을 것이다. Starting GDB GDB를 사용하기 위해서는 컴파일 시에 -g 플래그를 사용하여야 한다. $ gcc -g trees.c ※ c++ 사용자라면 g++ -g trees.cpp 라고 해도 된다. 위와 같은 작업 후엔 a.out 이라는 실행 가능 파일이 생성 된다(만일 -o 플래그로 다른 이름을 줄 수도..
[Visual Studio] Break point 버그 없는 프로그램을 만드는 것이 가장 좋은 방법이긴 하지만 현실적으로 처음 부터 그런 것을 만든다는 것은 디버거에 대한 모독이며 여지껏 나왔던 디버깅 관련 책들에 대한 도전이다. 말이 이상하긴 하지만 디버깅이 프로그래밍에서 빠져서는 안되는 중요한 요소라는 것을 강조하고 싶은 것이니 대충 '디버깅은 중요하다' 정도로 이해하고 넘어 가도록 하자. 이렇게 중요한 디버깅을 함에 있어서 Visual studio는 상당히 도움되는 툴들을 제공하고 있는데 그 중에 제일미로 꼽을 수 있는 것이 바로 '브레이크 포인트(Break point)'다. 여기 와서 브레이크 포인트가 뭐냐고 묻는다면...나도 할 말이 없다. 그냥 브레이크 포인트는 알고 있고 대충 visual studio에서 제공하는 기본적인 디버깅 관련 툴들은..

반응형