인프런에 Windows Debugging Tip강좌 올렸습니다.
1,2편 무료공개이고 4K해상도 지원합니다.
1,2편 무료공개이고 4K해상도 지원합니다.
‘DLL프로젝트에서 static CRT를 사용할 경우 각각의 static CRT는 각각의 heap을 사용한다.따라서 static CRT를 사용하는 DLL을 2개 사용할 경우 프로세스에는exe(1) + dll(1) + dll(1) = 3 해서 최소한 3개의 heap이 존재한다.’ 라고 기억하고 있다. 근데 최근에 발표자료 만들면서 테스트 해보니 DLL을 여러 개 로드해도 heap 개수가 증가되지 않는 것으로 확인되었다. Windows 10이전에는 CRT가 msvcrtxxx.dll에 구현되어 있었고 … More DLL에서 static CRT를 사용하면 각각의 DLL은 다른 heap을 사용하는가?
디버거에서 exe를 launch한 경우 LFH를 사용하지 않는다는 글을 어디선가 본것 같다.일단 Visual Studio Debugger에 대해서는 해당되지 않는 얘기다.Windows 10/11 모두 exe를 직접 실행하거나 Visual Studio에서 launch한 경우 LFH를 사용하는 것을 확인했다. 이 와중에 조금 이상한 점을 발견했는데 windbg에서 launch하는 경우 동일 사이즈 메모리 할당에 대해서 HeapAlloc()에서 돌려주는 메모리의 실제 사이즈(heap entry의 사이즈)가 다르다는 것이다.debug/release 또는 … More windbg에서 실행할 때 HeapAlloc()이 다르게 동작하는 이유
Registry 설정 HKEY_LOCAL_MACHINE+SOFTWARE++Microsoft+++Windows NT++++CurrentVersion+++++AeDebug++++++Debugger = “C:\Windows\system32\vsjitdebugger.exe” -p %ld -e %ld -j 0x%p++++++Auto = 1 필요없으면 Auto = 1로 설정
2021년 9월 25일(토) 잡담 방송중 드러난 버그의 디버깅 썰. 증상 :점프했다가 떨어질때 바닥보다 약간 높은 위치에서 캐릭터가 멈춤. 이때 애니메이션도 착지 동작이 아닌 상태로 스톱. 원인:1) 캐릭터 오브젝트 스케일/회전/이동에 변화가 있을 경우 이를 렌더링용 변환 매트릭스에 반영하도록 되어있다. 불필요한 처리를 반복하는 상황을 막기 위해 업데이트 플래그 변수를 1로 세팅하고 이 변수를 체크하여 프레임당 한번만 수행한다. … More 캐릭터 위치 관련 디버깅 썰
게임 클라이언트에서 크래시 발생시 덤프파일을 생성하도록 해놨다. 데스크탑버전은 적용이 되어있는데 UWP는 적용이 안되어있어서 UWP에도 적용하려고 데스크탑버전의 덤프생성 코드를 테스트했다. 그런데 문제 발생. 어라? 근데 덤프 생성에 문제가 있다. 덤프파일은 만들어졌지만 정상적으로 디버거에서 읽히지 않는다. MiniDumpWriteDump()함수가 실패하네? 해당 에러값으로 이틀동안 구글링을 해봐도 도움되는 답이 없다. 테스트를 하다보니 64비트에서만, MiniDumpWithFullMemory플래그를 줄 경우만 발생하는걸 알게 됐다. ’64비트는 뭐가 … More CUDA사용시 MiniDumpWriteDump()실패
2013년 12월 27일 , Project D Online 출시 준비할때였다. 첫번째 보스(벽에서 미사일 쏘는 보스-혼두라 모티브)랑 싸우고 나오면 나와서 맵체인지 할때 게임이 멈추는 증상이 있었다. 멈춘다고 하는것은 플레이어 입장이고 정확하게 얘기하자면 데드락 아니면 무한루프인데 이 경우는 데드락이었다. 데드락은 데드락인데 그게 어플리케이션이 사실상 크래시한거고 크래시에 의한 데드락이었다. 버그 재현도 잘 되지 않아서 엄청나게 절망했었다. 최초 같은 사무실에 … More 2013년의 어느날 디버깅 메모(windbg)
적어도 디버그 빌드에 한해서라도 어플리케이션은 반드시 명시적 종료가 있어야한다. 명시적 종료 상황에서 힙을 비롯한 모든 리소스가 완전하게 해제되었는지 체크할 수 있어야 한다. 무엇보다 heap이 손상되었는지를 체크할 수 있어야한다. 명시적 종료할때 이걸 체크하지 않으면 눈에 띄지 않는 버그가 계속 쌓임. 시한폭탄임. 실제로 내가 만들던 게임 서버에서 그런 사건이 있었다. 사내 테스트 하루 전날 팀 내 플레이 … More Debugging – App의 명시적 종료의 필요성