# 문제 해결 증상별로 원인과 조치를 적었다. 해결되지 않으면 TabBouncer 창의 **진단 정보 복사**를 눌러 [이슈](https://github.com/jacking75/TabBouncer/issues/new/choose)에 붙여 넣는다. 붙여 넣기 전에 공개하고 싶지 않은 주소는 지운다. 로그는 `%LOCALAPPDATA%\TabBouncer`에 있다. TabBouncer 창의 **로그 폴더 열기**로 바로 연다. 읽는 법은 [로그 읽는 법](logs.md)에 있다. ## 실행과 설치 ### 실행하면 ".NET을 설치해야 한다"는 창이 뜬다 작은 zip(`win-x64.zip`)은 .NET 10 Desktop Runtime이 필요하다. [.NET 10 Desktop Runtime](https://dotnet.microsoft.com/download/dotnet/10.0)을 설치하거나, 런타임이 들어 있는 `win-x64-selfcontained.zip`을 받는다. ### "Windows의 PC 보호" 창이 뜨거나 백신이 경고한다 실행 파일에 아직 코드 서명이 없어서 생긴다. 릴리스 페이지의 `SHA256SUMS.txt`와 받은 파일의 해시가 같은지 확인한다. ```powershell Get-FileHash .\TabBouncer-v1.1.0-win-x64.zip -Algorithm SHA256 ``` 같으면 **추가 정보 → 실행**을 누른다. 백신이 격리했다면 백신 제품의 오탐 신고 기능으로 알린다. ### 두 번 실행해도 창이 하나만 뜬다 정상이다. 같은 데이터 폴더를 쓰는 TabBouncer는 하나만 실행된다. 두 번째 실행은 이미 떠 있는 창을 앞으로 가져온다. 트레이에 숨어 있어도 다시 보여 준다. 따로 실행해야 하면 `--data-dir`로 다른 폴더를 지정한다. ### 창을 닫았는데 프로그램이 계속 실행된다 닫기(X)는 트레이로 숨긴다. 알림 영역의 TabBouncer 아이콘을 두 번 누르면 창이 돌아온다. 완전히 끝내려면 창 오른쪽 위의 **완전 종료** 버튼이나 아이콘 메뉴의 **종료**를 누르거나, 창에서 Ctrl+Q를 누른다. 닫기를 종료로 쓰고 싶으면 설정에서 "닫기(X)를 누르면 트레이로 숨기기"를 끈다. ### "설정 저장 실패"가 로그에 남는다 설정 파일이 있는 폴더에 쓸 권한이 없다. TabBouncer는 실행 파일 폴더에 쓸 수 없으면 `%LOCALAPPDATA%\TabBouncer`를 쓰지만, `--data-dir`로 지정한 폴더나 읽기 전용 USB처럼 폴백할 수 없는 곳이면 실패한다. 쓸 수 있는 폴더를 `--data-dir`로 지정한다. 지금 쓰는 경로는 설정 창 맨 위에 나온다. ## Chrome 연결 ### "Chrome 계열 브라우저를 찾지 못했다" Chrome이 표준 경로가 아닌 곳에 설치돼 있다. 설정 창 **일반 → 브라우저 경로**의 **찾아보기**로 `chrome.exe`를 고른다. ### "Chrome 디버깅 포트에 연결하지 못했다" - 보안 소프트웨어가 브라우저 실행이나 로컬 연결을 막을 수 있다. TabBouncer와 Chrome을 예외에 넣는다. - 회사 PC에서 Chrome 정책 `RemoteDebuggingAllowed`가 꺼져 있으면 원격 디버깅을 쓸 수 없다. `chrome://policy`에서 확인한다. 이 경우 TabBouncer를 쓸 수 없다. - `debugPort`를 직접 지정했다면 다른 프로그램이 그 포트를 쓰고 있을 수 있다. `debugPort`를 `0`(자동)으로 둔다. - 전용 프로필이 손상됐을 수 있다. TabBouncer와 전용 Chrome을 모두 끈 뒤 `%LOCALAPPDATA%\TabBouncer\ChromeProfile` 폴더 이름을 바꾸고 다시 실행한다. ### "포트 N에는 TabBouncer 전용 프로필이 아닌 다른 Chrome이 있을 수 있다" `debugPort`를 고정했는데 그 포트에 다른 목적으로 띄운 Chrome이 있다는 경고다. 그 Chrome의 탭이 닫힐 수 있다. `debugPort`를 `0`으로 바꾸면 TabBouncer는 전용 프로필 Chrome에만 연결한다. ### "Chrome 연결 끊김"이나 "Chrome 닫힘"이 보인다 전용 Chrome 창을 모두 닫았거나 Chrome이 업데이트로 다시 시작됐다. TabBouncer는 닫힌 Chrome을 스스로 다시 띄우지 않는다. **Chrome 열기**나 **감시 시작**을 누른다. ### 전용 창에 확장, 비밀번호, 북마크가 없다 전용 창은 평소 프로필과 분리된 별도 프로필이라 정상이다. 전용 창에서 Google 계정으로 로그인해 동기화하거나 확장을 설치할 수 있다. uBlock Origin 같은 광고 차단 확장과 함께 써도 된다. ## 판정 ### 감시 중인데 광고 탭이 닫히지 않는다 1. **평소 Chrome에서 열지 않았는지** 확인한다. 가장 흔한 원인이다. TabBouncer는 전용 창만 본다. 전용 창에는 TabBouncer 안내 페이지가 열려 있고, 창 제목이나 주소창으로 프로필을 구분할 수 있다. 2. 작동 모드 카드가 **관측만**이면 관측 모드를 끈다. 3. 최근 목록에서 **유지·관측 항목도 표시**를 켜고 그 탭이 "유지"로 남았는지 본다. 기준 점수에 못 미친 것이다. 항목을 선택하고 **광고 도메인으로 등록**을 누르거나, 그 광고를 연 사이트를 **감시 사이트로 등록**한다. 4. 목록에 아무것도 없으면 점수가 기준보다 30점 이상 낮았거나 유지 규칙에 걸린 것이다. 광고가 버튼을 누를 때 열린다면 버튼 동작으로 보호받는다. [판정 방식](how-it-works.md#한계와-방어)의 한계를 참고하고, 광고 도메인을 설정의 `adDomains`에 직접 넣는다. 5. 광고 탭이 전용 창의 마지막 일반 탭이면 닫지 않는다. ### 정상 탭이나 로그인 창이 닫힌다 - 최근 목록에서 항목을 선택하고 **선택한 탭 다시 열기**와 **선택한 사이트 등록**을 누른다. - 로그인 창이면 설정의 **사이트 목록 → 기본 보호 목록(whitelist)**에 로그인 도메인이 있는지 확인하고 없으면 추가한다. - `strictMode`를 켰다면 끈다. ### 보던 페이지가 자꾸 원래 페이지로 돌아간다 클릭 없이 다른 사이트로 넘어가는 정상 서비스(세션 만료 안내, 외부 결제 이동, 자동 로그아웃)를 광고 리다이렉트로 본 것이다. 최근 목록의 "이동 되돌림" 항목을 선택하고 **선택한 사이트 등록**을 누른다. 계속 문제가 되면 설정에서 "현재 탭 강제 이동 되돌리기"를 끈다. 같은 페이지가 30초 안에 계속 다시 이동하면 두 번 되돌린 뒤에는 이동을 허용한다. 무한 반복을 막기 위해서다. ### 안내 페이지의 버튼이 눌리지 않는다 버튼은 TabBouncer가 그 탭에 연결된 뒤에 활성화된다. TabBouncer 창에서 연결 상태가 "연결됨"인지 확인하고 안내 페이지를 새로 고친다. ## 알림과 트레이 ### 차단 알림이 뜨지 않는다 - 설정에서 "광고를 막으면 알림 표시"가 켜져 있는지 확인한다. - Windows **설정 → 시스템 → 알림**에서 알림이 켜져 있는지, 방해 금지 모드가 아닌지 확인한다. ### 알림 영역에 TabBouncer 아이콘이 여러 개 남는다 TabBouncer가 정상 종료되지 않으면(작업 관리자로 끝낸 경우 등) 아이콘이 잠시 남는다. 마우스를 올리면 사라진다.