debug 是不會 debug,這輩子都不會debug的。
這只是乙個玩笑 : ),世上沒有不會寫bug的程式設計師,debug肯定還是要的。如果讓我說,實習的第乙個月最興奮、難忘的事情是什麼,我肯定會說我為我們小組專案修復的第乙個bug,這對我是有里程碑意義的。十分中二的說,當我的分支被merge進主分支的時候,我的名字出現在annotate中的時候,我能感受到自己為專案出了乙份力,自己是專案的乙份子,哈哈。
不過言歸正傳,專案需要merge的分支有比較嚴格的要求,要注意不少東西。正好借用這篇文章記錄一下自己修復的第乙個bug,這一里程碑,也總結一下修復過程中其中用到的知識。
我在的專案組負責的是搜尋引擎的部分,前兩個星期,我主要是配置環境,閱讀原始碼,執行樣例**。在我執行的過程中,遇到了查詢到hit的score為nan(not a number)以及maxscore為0.0的情況。
可以從實驗結果看到有相應的hit,但是其分數是為nan,不符合預期。利用debug工具,回溯到產生問題的**,檢視相關的原因(保密協議,不能放相應的**~)。其導致nan的原因是,我們查詢有filedsearch與scoresearch,其中乙個邏輯出錯,無法進入scoresearch的分數部分就直接終止,這導致了相應了score與maxscore為nan。
修復了相應的問題之後,成功將我們的**賦值到score中,但是有乙個search方法。他有乙個hit,有相應的分數,但是maxscore為0.0。debug回溯分析原因,這是由於,其中乙個(++i)導致最後乙個hit不被考慮進入maxscore,所以只有乙個hit的時候maxscore為初值0.0。
至此,bug修復的部分完成,成功輸出sample**中的score與maxscore.
其會生成乙個相應的jira號(warp-52***),到時候需要我們放在git message中。
在本地完成bug修復,然後編寫了相應的jira日誌之後,就需要提交我本地的git 到 gitlab上。有關 git 的一些學習內容,可以檢視我這篇文章: git 工具學習的整理.
我們在本地開發的時候,肯定會建立自己的分支,並且不斷的commit儲存**的改動。多個結點會有多個commit資訊,而且合併的話會有多個衝突,到時候別人看到(git log資訊會記錄)的話會十分尷尬。這個時候,我們需要將我們多個commit合併成乙個commit, 這裡我們用到了互動式變基。
## 互動式變基
# -i 互動式
# head 倒數三個commit
git rebase -i head~3
注意變基之後,hash值也會發生變化。
在我 git clone **到本地 到我修復第乙個bug的時間,我本地的專案分支其實是沒有變化的(我自己建立的分支不算),但是遠端庫中的分支很可能有新的merge合併,這說明我本地的分支與遠端的分支不是乙個版本。如果沒有更新我們本地的分支就直接提交的話,顯然我們的分支與專案的分支會有衝突,是無法merge的。所以第一部我們需要更新本地的分支,讓本地的分支和遠端的分支保持一致。
首先我們需要記錄當前commit的hash值。然後
## 同步遠端與本地的內容
git remote update
## 從遠端倉庫開發分支上開闢新的分支fixbugtest2
git checkout -b fixbugtest2 trunk/develop1
## 拉去我們原來分支的內容給當前分支
這個時候,我們可以理解為,我們拉去當前遠端專案組工程最新的分支,將我們本地分支的改動合併成為乙個commit,然後將在最新的分支後放上我們的commit。這樣,我們的**就符合了提交的規範。
然後我們就可以提交fixbugtest2這一本地開發分支到我們遠端 fork的origin**庫中(注意origin不是專案的**庫,而是我們fork了公司的**庫,並將其放在了自己遠端origin**庫)。
# 上傳到遠端的fixbugtest2分支,然後到網上提交合併的申請
git push origin fixbugtest2
之前在學校,用git commit -m 「####」 中的message都是不嚴肅,不規範的,在公司就出了洋相,被boss要求改進。這裡就涉及了 git commit --amend 『#####』 指令。
# amend 修改commit 中的message資訊
git commit --amend 'new commit message'
然後偷懶放一下公司要求的commit message規範:
還有自己最終的message:
通過上面的指令,我們可以我們本地的開發分支上傳到遠端自己專案庫origin中。然後我們可以在gitlab中提出合併請求,提出請求之後,我們的**會觸發ci pipeline持續整合持續交付,其功能就是類似做ut、it測試,確保你的**是正確的。我們可以在主工程目錄下,檢視自己的測試結果。
通過完畢,便能通知專案管理人員合併你的merge了。
以上就是我完成的第乙個bug修復,裡面有很多是我在學校接觸不到的內容,感覺收益頗豐。希望能給大家帶來一些幫助 ?
記錄實習第乙個issue
intel實感深度攝像頭 二自由度雲台 用於採集深度圖和彩色圖,v 60 30 h 90 90 人臉識別攝像頭 人臉識別模組 實現人臉註冊 人臉識別 音響 雙麥克風 科大訊飛的語音互動模組 用於語音互動 雷射雷達 超聲感測器 紅外感測器 用於測距 路由器 用於通訊 伺服電機及電機驅動模組 用於運動控...
實習的第乙個月
轉眼間已經來上海乙個月了。從實習到現在感覺還不錯。周圍的同事們都很好,對我也很照顧,公司的氛圍也不錯,騰迅也算是我理想中的還可以的公司了。上班第一天就開始蹭同事的飯了 日料真的很好吃,趕緊發工資然後我也能去請一頓嘿嘿。我們的專案是用php,於是就從頭學了一遍,還好已經擼的蠻熟了,還學了zend fr...
實習總結 第乙個月
從進入公司實習到現在已經乙個月的時間了。這乙個月的時間主要就是老師對我們進行相關的培訓,早上9點上班,下午5點30下班,個人覺得是非常的輕鬆,不得不提的是除了相關程式設計方便的培訓之外,由於和日方合作,還需要額外學習一門日語,語言對於我們理科程式設計的人來說,懂得都懂.首先單方便說實習這個事情。以前...