문서 작업 가이드

스택 트레이스에서 복사된 gutter 줄 번호 제거

스택 트레이스의 확인된 뷰어 gutter 번호만 제거하면서 프레임 들여쓰기, 파일 줄·열 참조, 포트, 시간, 상태 코드와 정확한 구분자를 보존합니다.

작성 및 검수 게시일: 검토일:

이 작업 흐름을 검증한 방법

가이드 입력을 바꾸지 않은 채 줄 번호 제거에서 다음 예제를 재현했습니다: “스택 프레임 들여쓰기를 유지하며 일반 gutter 제거”. 정상 절차는 “gutter 번호와 진단 참조를 구분합니다”, “프레임과 숫자 증거를 검증합니다”; 경계 검토는 “자동 기호 모드가 일반 gutter를 제거한다고 기대하기”, “프레임 들여쓰기를 평탄화하기”로 분리해 결과를 확정했습니다.

왼쪽 gutter 번호는 세 행에서 제거됐지만 source 위치 :42:15와 :18:7 및 원래 stack 들여쓰기는 보존됐습니다.

문제 상황

코드 뷰어, 화면 전사, PDF, 리뷰 도구에서 복사한 스택 트레이스는 실제 줄마다 공백 앞의 12 같은 시각적 gutter를 포함할 수 있습니다. 이 번호는 검색, 이슈 서식, 정규식 시험, 원본 로그 비교를 방해합니다. 그러나 모든 숫자를 제거하면 user.ts:42:15 같은 프레임 참조, 포트, HTTP 상태, 타임스탬프, 프로세스 ID, 버전, 오류 코드라는 진단 증거가 사라집니다. 들여쓰기도 중첩 원인과 프레임 구조를 보여 주는 증거입니다. 따라서 앞 정수가 추가 gutter임을 확인하고 그 접두사만 제거하며 남은 들여쓰기와 구분자, 진단 숫자를 검증하고 승인된 범위 밖으로 보내기 전에 자격 증명을 가려야 합니다.

이럴 때 사용하세요

  • 비어 있지 않은 모든 스택 트레이스 줄이 복사된 뷰어 번호와 공백 또는 탭으로 시작합니다.
  • 번호가 붙은 코드 블록을 이슈, pull request, 프롬프트, 지원 문의에 실행 가능한 일반 텍스트로 넣어야 합니다.
  • 정리 후에도 실제 파일 줄·열 참조가 반드시 남아야 합니다.
  • 프레임 들여쓰기와 LF, CRLF, CR 또는 혼합 경계를 비교나 파싱에 유지해야 합니다.
  • 내보낸 gutter가 L001 |처럼 안정적이어서 시작 고정 RE2 표현식으로 시험할 수 있습니다.

단계

  1. 1단계

    원본 트레이스를 비공개로 보관합니다

    편집 전에 원본 트레이스를 허가된 위치에 저장합니다. 예외, 원인, 프레임 순서, 주변 로그, 원본 애플리케이션을 유지해 정리 결과를 비교하고 별도 사본에서 비밀값을 가릴 수 있게 합니다.

  2. 2단계

    gutter 번호와 진단 참조를 구분합니다

    첫 정수가 대상 줄마다 뷰어 열로 반복되는지 확인합니다. 경로 뒤 파일 참조, 타임스탬프, 포트, 상태, 프로세스 ID, 메시지 안 숫자는 트레이스의 일부이므로 선택하지 않습니다.

  3. 3단계

    일반 숫자 gutter를 명시적으로 선택합니다

    전체 기호 형식은 12 TypeError 같은 구두점 없는 접두사를 제거하지 않습니다. 레이아웃을 확인한 뒤 일반 숫자를 선택하세요. 앞 정수와 구분 공백 한 칸을 제거하고 추가 프레임 들여쓰기는 보존합니다.

  4. 4단계

    정리 근거를 비교합니다

    접두사 제거 줄을 비어 있지 않은 줄과 비교하고 미일치 줄을 더 넓은 규칙으로 강제하지 말고 검토합니다. LF, CRLF, CR, 혼합 상태와 입력 끝 줄바꿈 유지 여부도 확인합니다.

  5. 5단계

    프레임과 숫자 증거를 검증합니다

    예외 줄, 중간 프레임, 중첩 원인, 마지막 프레임을 원본과 비교합니다. 경로, :줄:열 참조, 들여쓰기, 상태 코드, 포트, 버전, 타임스탬프가 정확히 같아야 합니다.

  6. 6단계

    공유 사본을 가리고 시험합니다

    정책에 따라 토큰, 쿠키, 자격 증명, 사설 URL, 개인정보를 정리된 사본에서 제거합니다. 이슈 트래커, 파서, 정규식 도구, 프롬프트에 표본을 붙여넣고 형식을 확인한 뒤 허가된 전체 발췌문을 공유합니다.

예시

스택 프레임 들여쓰기를 유지하며 일반 gutter 제거

입력

12 TypeError: Cannot read properties of undefined
13     at renderUser (/app/src/user.ts:42:15)
14     at async GET (/app/src/route.ts:18:7)

출력

TypeError: Cannot read properties of undefined
    at renderUser (/app/src/user.ts:42:15)
    at async GET (/app/src/route.ts:18:7)

흔한 실수

자동 기호 모드가 일반 gutter를 제거한다고 기대하기

일반 정수는 모호하므로 자동 모드가 유지합니다. 복사된 열을 확인하고 일반 숫자 gutter를 명시적으로 선택하세요.

트레이스의 모든 숫자를 삭제하기

전체 숫자 제거는 실패 재현에 필요한 줄·열 참조, 타임스탬프, 상태 코드, 포트, 프로세스 ID, 버전을 파괴합니다.

프레임 들여쓰기를 평탄화하기

기본 정리는 gutter 뒤 구분자 한 칸만 제거하고 추가 공백을 유지합니다. 대상 파서에 문서화된 다른 요구가 없다면 구조를 보존하세요.

미일치 문맥 줄에 하나의 패턴을 강제하기

줄이 접힌 메시지나 복사 머리글에는 gutter가 없을 수 있습니다. 유효한 내용을 지울 때까지 규칙을 넓히지 말고 미일치 줄을 개별 검토하세요.

로컬 처리라는 이유로 비밀값을 공유하기

로컬 정리는 공유 대상까지 비공개로 만들지 않습니다. 다른 곳에 게시하기 전에 인증 헤더, 토큰, 쿠키, 고객 데이터, 내부 주소를 가리세요.

자주 묻는 질문

12 TypeError에 일반 숫자를 선택해야 하는 이유는 무엇인가요?

구두점 없는 앞 숫자는 실제 내용일 수 있습니다. 명시적인 선택은 자동 모드가 추측하게 하지 않고 뷰어 gutter로 확인했다는 뜻입니다.

user.ts:42:15는 트레이스에 남나요?

네. 기본 제거는 줄 시작의 확인된 접두사만 대상으로 합니다. 프레임 뒤쪽의 파일 줄·열 참조는 변경하지 않습니다.

at renderUser 앞에 공백 네 칸이 남는 이유는 무엇인가요?

gutter 뒤에는 구분 공백 한 칸과 원래 프레임 들여쓰기가 있습니다. 구분자만 제거하고 나머지를 보존해야 스택 구조를 읽을 수 있습니다.

L001 | 같은 gutter는 어떻게 처리하나요?

가린 표본에서 ^L\d{3} [|] 같은 한도 있는 표현식을 시험하세요. 사용자 모드는 RE2를 사용하고 ^와 비어 있지 않은 일치를 요구하며 일치 전체를 제거합니다.

줄바꿈 보존이 이슈 트래커의 CRLF도 보장하나요?

도구 출력과 다운로드는 원본 구분자를 유지합니다. 클립보드 대상이나 이슈 트래커가 통일할 수 있으므로 정확한 구분자가 필요하면 붙여넣은 결과를 확인하세요.

공유 전에 어떤 트레이스 값을 가려야 하나요?

정책에 따라 자격 증명, 토큰, 쿠키, 개인정보, 사설 호스트나 경로, 민감한 query 값을 제거하되 오류 진단에 필요한 비밀이 아닌 프레임 문맥은 유지하세요.