하이젠베르크(Heisenberg)의 미국식 발음이 하이젠버그라는 것에서 착안해서 만들어진 용어이다. 하이젠베르크 독일의 물리학자로 불확정성 원리로 유명하다. 하이젠베르크에 대해 더 알고 싶다면

부분과 전체
이 책을 읽어보기 바란다.

하이젠베르크의 불확정성 원리를 간혹 관찰이 현상을 왜곡하다는 말로 설명하기도 한다. 하이젠버그라는 것은 디버깅하는 행위(디버깅툴을 사용해서 break 같은 것을 거는 해위 또는 c에서 assert 같은 문장을 넣는 행위 등등) 가 시스템을 변경하는 현상을 말한다.

2가지가 경우가 있을 것이다. 디버깅 코드가 들어갔을 때는 잘 작동하다가 디버깅 코드가 빠지면 작동안되는 현상. 이런 현상은 Debug 모드로 컴파일 할 때는 잘 작동하는 것이, Release 모드로 컴파일 할 때는 잘 안되는 현상으로 나타난다. C 에서 assert 문이 일으키는 마법이다. assert ( stack.pop() ) 처럼 Stack 을 Pop 하는 곳에 assert 가 들어간다면 릴리즈 모두에서는 당연히 stack의 pop 이 안 일어나 뭔가 이상해 질것이다.

다른경우는 잘 작동 안하다가 디버깅을 위한 코드를 집어넣을 때(printf 같은 것) 갑자기 잘 작동하는 경우이다. 쓰레드 같은 것이 이런 경우가 있다고 한다. 나는 이런 경우는 없었기에 모르겠다.

어째든 굉장한 말장난이다. 하이젠베르크와 하이젠버그의 관계.