본문 바로가기

분류 전체보기1382

C++ 멀티스레드 디버깅 방법 2가지, 메시지와 sleep 이용한 이론 C++ 멀티스레드 디버깅 방법 2가지, 메시지와 sleep 이용한 이론 C++ 멀티스레드 디버깅 프로그램의 버그는 운영체제의 스케줄링 타이밍과 연관되어 변동되는 경우가 많으므로 재현하기가 매우 어려울 수 있다. 따라서 C++ 멀티스레드 디버깅 프로그램의 디버깅은 몇 가지 특수한 테크닉을 요구한다. 1. 메시지에 기반을 두어 디버깅한다 C++ 멀티스레드 디버깅 프로그램을 디버깅할 때는 디버깅를 이용하는 것보다 디버깅 메시지를 이용하는 것이 더 효과적일 수 있다. 애플리케이션의 종류에 따라서 cout이나 로그 파일 또는 GUI 컴포넌트 등을 통해 메시지를 출력할 수 있다. 크리티컬 섹션의 시작과 끝 그리고 락의 획득과 해제 시점 각각에 멀티스레드 디버깅 메시지를 삽입한다. 여기서 출력되는 메시지를 분석하면 .. 2017. 1. 14.
C++ List index 랜덤 접근, lterator advance next 응용 (비추천) C++ List index 랜덤 접근, lterator advance next 응용 (비추천) advance 함수를 이용해 C++ List index에 접근합니다. 그리고 해당 데이터를 복사해 가져오는 건데 ... 별로 좋아 보이진 않는군요. 저런 루틴이 반복적으로 돈다면 ... 아우... 끔찍합니다. 정말 급하디급할 때 잠깐 써먹기엔 좋겠네요. 참고로, .size() 함수는 매번 컨테이너를 순회하며 크기를 세다 보니 O(n)의 속도가 나옵니다. 그러니, 커다란 컨테이너에서 size()를 호출하는 함수가 있다면 당장 지우세요. c++11 forward_list는 이점 때문에 size() 함수를 아예 제거했습니다. 123456789101112131415161718std::list l;// add eleme.. 2017. 1. 14.
GDB 사용법과 명령어 정리, GNU debugger 디버깅 (메모리 덤프 해결) GDB 사용법과 명령어 정리, GNU debugger 디버깅 (메모리 덤프 해결) GNU debugger GDB 소개, GDB 사용법 GNU debugger이며, 줄여서 GDB라고 불리는 이 소프트웨어는 GNU 소프트웨어 시스템을 위한 표준 GNU debugger이다. GNU debugger GDB는 다양한 유닉스 계열 시스템에서 동작하며, C, C++, 포트란을 비롯한 수많은 프로그래밍 언어를 디버깅하도록 도와주는 이식성 높은 GNU debugger이다. 단순하고 직관적인 디버거인 GNU debugger GDB GNU debugger GDB는 CLI(명령 라인 인터페이스)를 통해 각종 정보를 제공하는데, 메모리 정보, 스택 정보, 레지스터 정보 등 매우 다양한 정보를 제공한다. GDB 사용법 = 기본적.. 2017. 1. 13.
C# 그림판 - GDI 코딩배우기 (닷넷 윈폼 GUI 프로그래밍 강좌) C# 그림판 - GDI 코딩배우기 (닷넷 윈폼 GUI 프로그래밍 강좌) 제가 학생 시절에 만들었던 C# 그림판입니다. 지금 다시 보니 null 여부도 거르지 않고 엉망으로 만들어 놨네요. 어쨌든, 일단 공유하는 차원에서 업로드 합니다. C# 그림판 첨부파일 프로젝트 전체 압축 파일 : PaintEx.cs [다운] 윈폼 디자이너 소스 : PaintEX.Designer.cs [다운] 윈폼 기능 구현 소스 : PaintEX.zip [다운] MSDN에서 참조한 DrawData 클래스 : DrawData.cs [다운] 1. PaintBox 초기화 바로 아래 코드는 프로그램을 처음 실행할 때, 수행되는 코드입니다. C# 그림판 Form이 로드 될 때 불려지는 코드가 되겠죠. ResizeRedraw의 값을 기준으로 .. 2017. 1. 13.