Debugging with Visual StudioLusain Kim Visual Studio의 디버깅 도구들을 소개합니다. 이 자료는 /LusainKim/ss-54856264 에서 Visual Studio의 기능에 초점을 맞추어 작성되었습니다.
이 문서는 Visual Studio 2017 Community 버전을 기준으로 설명되어 있습니다.
기타 질문사항은 sain9212@gmail.com 으로 부탁드리겠습니다.
델파이 윈도우 애플리케이션 개발 - 체크리스트Devgear델파이는 단 하나의 코드베이스로 윈도우/맥/안드로이드/iOS 용 앱을 한 번에 개발해 배포할 수 있는 개발툴입니다.
10.1.2 베를린 버전(2016년 출시)부터는 윈도우10 센테니얼 브릿지 기능이 개발툴 중 최초로 지원되었으며, 이 기능을 통해 개발한 애플리케이션을 윈도우10 스토어로 바로 배포할 수 있습니다.
데브기어 정규 과정 '델파이 윈도우 애플리케이션 개발' 과정을 통해 관련 내용을 배울 수 있습니다.
이 문서는 해당 과정에서 다루는 내용들을 정리한 체크리스트입니다.
자세히 보기: http://www.devgear.co.kr/support/education/delphi_windows
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기Chris Ohk기존에 작성해 놓은 C++ 코드에 모던 C++를 적용하기는 쉽지 않습니다. 막상 개선하려고 마음먹었다고 해도, 어디서부터 바꿔야 할 지 막막하기만 합니다. 이 세션에서는 기존 C++ 코드에서 모던 C++를 적용해 프로그램의 구조와 성능을 개선하는 방법에 대해서 설명합니다. 그리고 기존 C++ 코드에 모던 C++를 적용할 때 주의해야 될 점에 대해서도 살펴봅니다.
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들영욱 오게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
http://ndcreplay.nexon.com/NDC2017/sessions/NDC2017_0079.html 이곳에서 영상과 슬라이드를 함께 보실 수 있습니다.
Boost라이브러리의내부구조 20151111 서진택JinTaek Seoboost라이브러리 중에서 가장 많이 사용하는 기능인 BOOST_FOREACH()와 shared_ptr의 내부 구조를 분석합니다. 그리고 boost의 내부 구현에 사용된 이 기능을 프로그래밍에 응용하는 방법을 제시합니다.
* BOOST_FOREACH 구조 분석 및 응용
* shared_ptr 구조 분석 및 응용
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기Chris Ohk기존에 작성해 놓은 C++ 코드에 모던 C++를 적용하기는 쉽지 않습니다. 막상 개선하려고 마음먹었다고 해도, 어디서부터 바꿔야 할 지 막막하기만 합니다. 이 세션에서는 기존 C++ 코드에서 모던 C++를 적용해 프로그램의 구조와 성능을 개선하는 방법에 대해서 설명합니다. 그리고 기존 C++ 코드에 모던 C++를 적용할 때 주의해야 될 점에 대해서도 살펴봅니다.
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들영욱 오게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
http://ndcreplay.nexon.com/NDC2017/sessions/NDC2017_0079.html 이곳에서 영상과 슬라이드를 함께 보실 수 있습니다.
Boost라이브러리의내부구조 20151111 서진택JinTaek Seoboost라이브러리 중에서 가장 많이 사용하는 기능인 BOOST_FOREACH()와 shared_ptr의 내부 구조를 분석합니다. 그리고 boost의 내부 구현에 사용된 이 기능을 프로그래밍에 응용하는 방법을 제시합니다.
* BOOST_FOREACH 구조 분석 및 응용
* shared_ptr 구조 분석 및 응용
3. 프로그램은 왜 실패하는가?프로그래머가 잘 못 짰기 때문이다나는 너가 열심히 할 거라고 믿지만, 동시에 너가 분명 몇 개의 결함(defect) 을 만들어 낼 거라고 믿는다
4. 버그는 없다개발자는 결함(defect) 를 만들어 내는 거지, 저절로 어딘가에서 벌레(버그)가 들어오는 건 아니다물론 내가 짠 코드가 아닌 다른 코드, 라이브러리, 머신에서 생긴 결함을 만나게 되면, 버그처럼 느껴질 것이다모든 결함을 다 해결할 수 있고, 결함은 하나도 없을 거라는 자만을 먼저 버려라항상 ‘만약 ~라면’ 을 준비해라
5. 용어 정리결함(defect) : 부정확한 프로그램 코드사람이 만든 것감염(infection) : 부정확한 프로그램 상태실패(failure) : 관찰 가능한 부정확한 프로그램 행동발생 : 결함 -> 감염-> 실패찾기 : 실패 -> 감염 -> 결함
15. 디버깅 사례Track the problemCrash 위치 확인(하지만 일정하지 않음)Reproduce정확한 재현방법 없음AutomateR 가 해결 안 되면 A 는 할 수 없다
16. 디버깅 사례Find OriginsCrash 중 CVideo 의 m_TestData 소멸자가 자주 보였다Focus : 진짜 감염원에 집중저번 업데이트와 비교해 봤더니 m_TestData 가 추가된 것 밖에 바뀐 게 없었다Isolate : 감염 사슬 격리m_TestData 를 주석처리했더니 crash 현상이 2시간마다 발생하던 것이 3일마다 발생했다STL 의 버그인가? 메모리 풀에 버그가 있는 걸까?여전히 crash 현상은 있고, CVideo 의 데이터가 이상한 값이 저장된다는 새로운 실패(failure)가 올라왔다
17. 디버깅 사례Find Origins이전 업데이트 code 와 전체 code 를 diffFocus : 진짜 감염원에 집중추가된 코드 중에서 의심가는 부분이 있긴 한데, 코드가 몇 천줄이 넘었다copy & paste 를 한 코드 같아서, 원본 코드와 새로 작성한 코드를 diff 해 보았다대부분의 코드가 거의 비슷한데, 한 라인에서 리턴값을 smartptr 에 저장하지 않고, raw pointer 에 저장하고 있었다
18. 디버깅 사례Correct : 결함 정정암묵적 변환을 막기 위해 explicit 추가했더니 500 군데가 넘는 코드를 변경해 줘야 했지만, 결국 했다return new CVideo(nId);-> return CVideoPtr(new CVideo(nid));m_nRef 가 0 미만이면 로그만 남기는 것이 아니라 개발자에게 이메일을 쏘도록 변경
19. 그 후 달라진 점1 주일마다 code review매주 금요일마다 스터디하던 거 다시 시작심각한 버그 정리 및 기록