난 정말 코드가 아닌 버그, 대기, 첫 번째 시도 고무 오리 디버깅을 수행

작업을 완료하기 위해 학생들에게 오늘을 테스트하기 위해, 나는 기능을 테스트하기 위해 초과 근무.

내 코드가 완성되기 때문에이 갈 수 있도록, 시험을 동반 할 필요가 ~이 없다

첫 번째 질문은 엄지 손가락의 규칙을 통해 넣어 오후에, 이것은 논리적 인 질문을 테스트해야하고, 마침내 그는 자신을 발견했다.

잠시 후, 나는이 일정 수준을 입력 할 수있는 조건의 히트 입력 다음 단계로 건너 뛰하지 않는 것을 말하고, 두 번째 질문을했습니다.

난 분명이 시간에 말을하지, ​​개발 몇 년간의 경험을 가지고 "내 코드가 다시 시도, 버그가 아닙니다." 비용이 거의 제로이지만,라고하는 경우 정말 상처의 싸움 얼굴이 ~ ~ ~

마음이 신속하게 로그를 보려면, VPN 연결, 그래서 순종, 답변을 줄 잠금을 해제하려면, 지문을 컴퓨터 덮개를 열 수있는 마음의 운동에 의해 밝혀진 생각에서 이동합니다.

때문에 거대한이 수요 지표, 프로세스가 비교적 긴, 그래서 나는 코드의 핵심 노드의 로그 데이터를 인쇄 한한다.

그래서, 당신은 정보를 원하는, 로그가 있습니다. 그러나,주의 깊게 로그에 데이터를 읽고, 조심스럽게 제시하는 학생들을 테스트하기 위해 테스트 데이터를 비교했다. 이유,이 정말 명중한다.

그러나 사실이 명중되지 않으며, 조사가 시작되었다.

 

구성보기 센터

많은 지표 때문에 각 지표가 임계 값을 갖는 첫 번째 첫 번째 반응은 다른 사람의 냄비, 내가 시험에서보고 학생들을 신뢰하지 않도록 읽기 후에, 나는 조금의 죄책감이다, 문제의 매개 변수 임계 값을 조정하지 않는 한,이 아니다 학생들이 시험 문제는 지표는 오른쪽에 있습니다.

내가 지표가 적용되지 않았다 선도 열을 활용할 그에게 말했다 그러나 아직 포기하지 않았다, 더로드 옵션되지 않습니다. 여기의 생각, 나는 흥분 좀 해요, 네, 사실은 흥분의 마음이 그에게 진실을 말해, 표면 삼가 할 수 있었다 : 이것은 당신이 그것을 확인하는 것을 잊지 구성입니다 (그것이 얼마나, 당신의 문제입니다)

당신은, 방송 해는 용기를 준 것 원하는 당신이 증거를 가지고 가야 대담,에 가고 싶다.

할 우리의 유통 센터가 너무 친밀한, 각각의 작업은 역사를 볼 수 있습니다. 빨리 탭 다음, 그림, 그의 훈련과 준비를 잘라.

등등, 이것은 옵션이 선택되어 학생들이 너무 엄격한 테스트 수, 아 생각하지 않았다.

emmm

 

조정 전략

보기 로그의 관점에서, 테스트 데이터는 문제가되지 않습니다.

보기의 유통 센터의 관점에서, 또한 후크의 구성.

테스트 용의자, 단 하나의 진실을 배제, 내 문제가 (자신의 뺨을, 당신이 시작하는 데 활용할 수 있습니다).

가족이 VPN에 연결되어 있지만, 당신은 또한 프로젝트를 게시, 로그보고 있지만, 지역, UT는 부당 실행 서비스를 시작하는 데 도움이되지 않습니다 수 있습니다.

그것은 단지, 당신이 알고, 코드를 살펴 아무것도 의심의 아무것도 알고, 다른 사람의 단점을 찾을 수 있습니다, 그것은 개방의 장 레빈 레이 표준에 있었다.

자신의 문제를 찾으려면? 우선, 자신을 거부 나는 또한 결함 것을 알고있다, 이것은 내가 그것을 어떻게 어려운 일이 있지만입니다!

도 (남 - 학생들에게 설명을 테스트하기 위해, 솔직히 시도 눈에 자신의 코드를 원하는 발견 읽기 시작했다

 

 

지혜없는

테스트 포인트 코드 로직에 관련된 복잡하지 않습니다. 아마이 과정은

각 인덱스의 현재 값을 얻기 위해 동시 호출을 상류 -> 규칙의 필터층 ->이 규칙 조건 히트가 히트로 간주되는 경우, 또는 미스

따라서, 두 개의 지표에 따른 학생들의 테스트 및 테스트 데이터가 두 규칙보다 임계치를 제공합니다.

로그보기에서 업스트림 데이터는 데이터 비교에서, 그것은 비교가 있어야하지만 공격하지 않았다, 문제가되지 않습니다.

그래서, 떨림을 방지하기 위해, 코드를 관련하여 다음 두 가지 규칙을주의 깊게 검사를 시작했다 "! =" "=="의 경우 글입니다.

불행하게도, 내보기에, 장소의 더 중요보기, 우리는 내 코드가 너무 엄격 것을, 내가 어떤 결함을 찾을 수 없습니다 발견했다.

순서가 아닌 테스트 학생들이 스레드 I 물, 캐치 물고기에 그릴 끊으려면, 나는 "코드, 당신은 첫 번째 테스트 다른 로직, 내가 볼 아무것도 문제를 보았다.":. 잠금을 해제했다

 

작은 황 나중에는 저를 저장

내 마음은 시각 장애인의 눈을 나는 약간의 난시를 가지고 있지만, 취소,하지만.

그래서 심지어 10 배 이상 여덟 번 경우, 확실히 여전히 버그를 찾을 수 없습니다.

의 생각을 바꿀 때입니다.

그 위에, 의심되는 과정 자체가 배제하거나 코드에서 발생하는 의심에서, 코드 규칙의 상류 용의자 시험 학생을 제외, 다운 스트림 혼자 전혀 모르고 아 하류 코드를 보자.

그것에 대해 생각, 다른 코드 앞에이 규칙은 비록 규칙이 있습니다. 나는 인간의 육체 버그를 찾고, 그의 눈을 연마하기로 결정했다.

자신에게 감정없는 기계로, 다시 용의자를 제외 코드의 결과를 통해 내가 쓴이 깔끔하고 깨끗한 코드를 읽고.

과제의 상류 아무 문제 없습니다!
변수 초기화와 결과 문제를 반환하지!
첫 번째 규칙은 아무 문제 없습니다!

  

첫 번째 규칙은 아무 문제 없습니다!

다른 초기 변수 할당과 문제를 반환하지!

이어서 제 규칙 및 제 규칙의 중간 코드를 통해 규칙을 시작한다.

이 경우 메소드가 리턴 기대 값 아를 반환하지 않는 것? !

예, 나는 단지 히트에 할당 조건에서 반환에 관계없이 반환하는 변수 값 여부에 명중해야합니다. 이 규칙에 충돌하지 않는 경우, 할당은 없다, 실제로 0 인이 변수의 기본 값을 반환 제로하는 타입!

방송 해에만 늦게, 그러나 결코 결석.

我告知测试同学,我应该知道原因了,我修复下,一会再试下,后面的“英雄事迹”就不多介绍了。

 

总结盘点

虽然不是什么大问题,也不是什么线上大事故。

只是想表达,几乎没有人敢说自己写的代码0bug,写完就可以上线。曾经有跟我这么承诺和标榜的人,最终都是难逃翻车和打脸的命运。

有问题,理性分析最重要,从涉及bug的方方面面,包括经手的人和代码本身,都有可能出问题。

有时候,如果发现是自己的问题,但是又迟迟找不到原因,不要一个人闷着头苦苦思索,找个同事来帮你一起找。有时候就在你准备让别人一起来看看,你开始描述问题的诡异之处,还没说完,你就突然知道了原因。不知道你遇到过没有,反正我有。

今天回过头想想,哪些被我叫来的人其实就是工具人,他们和小黄鸭无异。

什么是小黄鸭和小黄鸭调试法呢,参见百度词条

此概念是参照于一个来自《程序员修炼之道》书中的一个故事。传说中程序大师随身携带一只小黄鸭,在调试代码的时候会在桌上放上这只小黄鸭,然后详细地向鸭子解释每行代码  。
  许多程序员都有过向别人(甚至可能向完全不会编程的人)提问及解释编程问题,就在解释的过程中击中了问题的解决方案。一边阐述代码的意图一边观察它实际上的意图并做调试,这两者之间的任何不协调会变得很明显,并且更容易发现自己的错误。如果没有玩具小鸭子也可以考虑向其它东西倾诉,比如桌上的花花草草,键盘鼠标。

  

类似这样

或者这样

找不到鸭子,找同事也一样~

 

如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!如果您想持续关注我的文章,请扫描二维码,关注JackieZheng的微信公众号,我会将我的文章推送给您,并和您一起分享我日常阅读过的优质文章。

추천

출처www.cnblogs.com/bigdataZJ/p/rubber-duck-debugging.html