“불량 조사” 태그의 글
“불량 조사” 태그가 붙은 글 24건을 최신순으로 정리했습니다.
-
절전에서 재개하면 깨지는 앱 ── Windows 전원 이벤트의 구조와 살아남는 업무 앱
노트북을 열었더니 업무 앱의 연결이 죽어 있었다 ── 원인은 절전을 전제하지 않은 설계입니다. WM_POWERBROADCAST 알림의 흐름, Modern Standby의 동작, 끊김/재연결 설계, 절전 억제, 조사 명령을 1차 정보로 정리합니다.
-
DllMain과 로더 락 ── 「DLL 초기화에서는 아무것도 하지 말라」는 말의 진짜 이유
DllMain에서 LoadLibrary를 호출하거나 다른 스레드와 동기화해서는 안 되는 이유를 설명합니다. 로더 락이 모든 DLL 알림을 직렬화하는 구조, 데드락이 구조적으로 확정되는 고전적 시나리오, 초기화를 미루는 올바른 설계, 행(hang) 조사 방법을 1차 정보로 정리합니다.
-
「응답 없음」의 정체 ── Windows가 앱의 행을 판단하는 방식과 멈추지 않는 설계
Windows의 「응답 없음」은 창이 5초 동안 메시지를 꺼내지 않았다고 OS가 판단해 고스트 창으로 바꾸는 메커니즘입니다. 그 판단의 내부, 행의 고전적 원인, 무거운 작업을 UI 스레드에서 떼어 내는 설계, 행 조사 절차를 정리합니다.
-
스퓨리어스 웨이크업 ── 조건 변수가 「알림 없이」깨어나는 이유와 Windows에서 올바르게 대기하는 방법
조건 변수의 대기는 알림이 오지 않아도 돌아올 수 있습니다(스퓨리어스 웨이크업). Windows 구현에서 사양이 그것을 허용하는 이유를 설명하고, while 루프와 술어로 올바르게 대기하는 방법을 Win32, C++, C#으로 보입니다.
-
WPR/WPA 실무 ── 「PC 전체가 느리다」를 시스템 전체로 조사하는 입문
작업 관리자로는 따라갈 수 없는 「PC 전체가 느리다」「기동이 느리다」는 성능 문제를, WPR/WPA로 OS 전체 ETW 트레이스를 캡처하고 읽어 조사합니다. wpr.exe 캡처 절차와 WPA에서 CPU·대기·디스크 I/O를 읽는 법을 정리합니다.
-
멀티스레드 실무 베스트 프랙티스 Java 편 ── 가상 스레드 시대의 정석
Java의 멀티스레드는 스레드를 직접 만들지 않고 ExecutorService와 가상 스레드에 올라타는 것이 정석입니다. synchronized와 ReentrantLock의 구분, 인터럽트에 의한 협조적 정지, ConcurrentHashMap의 원자적 연산, Swing의 EDT까지...
-
멀티스레드 실무 베스트 프랙티스 C 언어 편 ── Win32 API의 방식으로 안전하게 작성하기
C 언어 × Win32의 멀티스레드는 _beginthreadex를 이용한 스레드 생성, SRW 잠금과 조건 변수, Interlocked, 정지 이벤트+WaitForMultipleObjects의 정지 설계가 정석입니다. TerminateThread의 위험성과 DllMain의 제약까지...
-
멀티스레드 실무 베스트 프랙티스 C++ 편 ── RAII와 jthread로 사고를 구조적으로 없애기
C++의 멀티스레드는 데이터 경쟁이 미정의 동작이 되는 세계입니다. std::thread 소멸자의 함정, jthread와 stop_token에 의한 정지 설계, scoped_lock의 데드락 회피, atomic의 올바른 위치, Win32 동기화 API와의 구분 사용까지 정리합니다.
-
Windows I/O의 심층(제1회) ── 모든 읽기·쓰기는 IRP가 된다: I/O 시스템의 전체상
Windows의 I/O 시스템을 밑바닥부터 해설하는 연재의 제1회입니다. 오브젝트 관리자의 이름공간, 드라이버·디바이스·파일이라는 3가지 오브젝트, IRP의 라이프사이클, CloseHandle의 이면까지를 그림으로 정리합니다.
-
Process Explorer / Handle / VMMap 실전 ── 행(hang)・누수・「파일 사용 중」을 지금 이 순간의 상태에서 추적한다
「점점 느려진다」「파일을 지울 수 없다」「행(hang)이 걸렸다」를 조사하는 Sysinternals 실전 제2탄입니다. Process Explorer의 핸들 검색・스레드 스택・누수 감시 컬럼, handle.exe, VMMap을 이용한 메모리 내역 분해를 실무 관점에서 설명합니다.
-
장애 대응은 복구로 끝나지 않는다 ── 소규모 개발팀을 위한 포스트모템(재발 방지)의 틀
장애를 「고치고 사과하고 끝」으로 처리하면 같은 장애가 반복됩니다. blameless postmortem을 소규모 팀에 맞게 옮겨, 1시간이면 쓸 수 있는 템플릿, 재발 방지책의 강도 판단표, 실시 트리아지까지 정리합니다.
-
슬립・최대 절전 모드・Modern Standby와 장시간 가동 앱 ── '한밤중에 멈춰 있었다'를 설계로 막는다
장시간 계속 동작하는 Windows 앱이 '아침에 보니 멈춰 있었다'가 되는 원인을, S3 슬립/최대 절전 모드/Modern Standby의 차이에서 정리합니다. 슬립 중 타이머와 TCP 연결의 동작, SetThreadExecutionState에 의한 억제까지 설명합니다.
-
소스 코드도 사양서도 없는 시스템을 인계받았다면 ── 멈추지 않고 운용·보수하기 위한 실무 절차
소스 코드도 사양서도 없는 업무 시스템의 운용·보수를 시작하는 실무 절차를 정리합니다. 가동 중인 환경의 보전과 백업, 실행 파일·DB의 목록화, 동작으로부터의 사양 복원, 연명·감싸기·재구축의 판단까지 설명합니다.
-
MAX_PATH와 Windows 경로·파일 이름의 함정 ── 260자 제한, 예약어, 끝 점, 대소문자
'파일을 찾을 수 없습니다'의 단골 원인인 경로·파일 이름 제한을 정리합니다. MAX_PATH=260자의 내역, LongPathsEnabled를 통한 긴 경로 활성화, CON 등의 예약어, 끝 점의 정규화, Path.Combine의 함정까지 설명합니다.
-
네트워크 드라이브와 UNC 경로의 함정 ── 업무 앱에서 파일 서버(공유 폴더)를 다루는 실무
업무 앱에서 공유 폴더로 출력・감시할 때 자주 발생하는 문제를 정리합니다. 드라이브 문자(Z:)가 서비스에서 보이지 않는 이유, 실행 계정별로 필요한 권한, 에러 1219, FileSystemWatcher의 주의점까지 해설합니다.
-
Process Monitor(ProcMon) 실전 가이드 ── 「설정이 반영되지 않는다」「ACCESS DENIED」를 10분 만에 특정하기
「설정 파일을 수정했는데 반영되지 않는다」「어제까지는 동작했는데 오늘부터 실행되지 않는다」──소스 코드에 손을 대기 전에, Process Monitor(ProcMon)를 사용하면 파일·레지스트리 접근의 실제 동작으로부터 원인을 특정할 수 있습니다. Filter의 실무적인 사용법, ...
-
PerfView와 dotnet-trace로 “느림”의 원인을 찾는다 ── .NET 성능 조사 실무 입문
업무 앱이 “느리다”, “CPU를 다 써버린다”, “가끔 멈춘다”고 할 때, 어떤 도구로 무엇을 봐야 할까요. PerfView와 dotnet-trace의 역할 분담, CPU 샘플링을 읽는 방법(inclusive/exclusive), ThreadTime을 이용한 블록 시간 조사, E...
-
Windows 이벤트 로그·ETW 입문 ── 업무 앱의 로그를 OS 표준 체계에 올리기
Windows 업무 앱의 로그를 파일 로그만으로 해결하고 있지는 않은가요? 이벤트 로그와 ETW는 운영 담당자나 OS 표준 도구에서 보이는 또 다른 계층의 기록입니다. 3가지 수단을 구분해서 쓰는 방법, .NET에서 기록하는 방법, EventSource를 이용한 ETW 계측, 수집...
-
WinDbg + SOS로 크래시 덤프 읽기 ── 수집 이후 실무 분석 입문
수집한 Windows 크래시 덤프를 WinDbg와 SOS 확장으로 실제로 읽는 절차를 설명합니다. 심볼 경로 설정, !clrstack・!pe・!dumpheap -stat・!gcroot로 예외와 메모리 누수를 추적하는 방법, 네이티브 크래시의 !analyze -v, dotnet-du...
-
Windows 앱 외주·수탁 개발을 의뢰하기 전에 정리해야 할 것
Windows 앱의 외주·수탁 개발을 의뢰하기 전에, 기존 소프트웨어 개수, 장치 연계, COM/ActiveX, 배포·업데이트, 보수와 관련해 정리해야 할 포인트를 설명합니다.
-
Windows 앱의 크래시 덤프 수집 입문 - 우선 WER / ProcDump / WinDbg를 어떻게 구분해서 쓸까
Windows 앱의 재현 어려운 크래시를 쫓는 첫걸음으로, WER LocalDumps, ProcDump, MiniDumpWriteDump의 구분 사용과 미니/풀 덤프 선택, PDB 보관과 권한 설계, WinDbg에서 먼저 볼 포인트까지 입문자에게 정리합니다.
-
Application Verifier로 만드는 Windows 비정상 경로 테스트 기반
Application Verifier가 무엇인지, Handles, Heaps, Low Resource Simulation, !htrace를 사용한 Windows의 비정상 경로 테스트 기반 구축과 함께 정리합니다.
-
산업용 카메라 제어 앱이 1개월 뒤에 갑자기 떨어질 때(전편) - 핸들 누수의 발견 방법과 장기 가동용 로그 설계
Windows 산업용 카메라 제어 앱이 약 한 달 연속 가동 후에 떨어지는 사례를 통해, 핸들 누수의 발견 절차와 Handle Count 관측, create/close 쌍을 추적하는 로그 설계, 단시간에 재현하는 실패 경로 테스트의 진행 방식을 정리합니다.
-
TCP 재전송으로 산업용 카메라 통신이 수 초 멈출 때 - RFC1323 타임스탬프와 재전송 대기의 구분
TCP 재전송으로 산업용 카메라 통신이 수 초 멈추는 원인을 패킷 로스, RTO, RFC1323 타임스탬프, Wireshark 확인 포인트와 함께 정리합니다.