導航:首頁 > 程序命令 > 程序員代碼崩潰怎麼辦

程序員代碼崩潰怎麼辦

發布時間:2022-05-15 12:30:38

程序員遇到解決不了的bug怎麼辦

但大部分程序員都有一個問題就是不太願意測試自己的代碼。他們草草的調式完成以後就認為工作結束,測試那是測試人員的工作。
1. 影響了程序員自己的聲譽
2. 影響了產品的質量
3. 影響了客戶的信任度
4. 這個時候再 DEBUG 難度增大了許多。
大的不說,就說多自己聲譽的影響吧。如果你的程序總會有這樣那樣的 BUG ,你得到收益會減少,即使你寫了很多代碼。
程序員必須克服一些自身的致命缺點才能夠從根本上解決這個問題。那麼這個問題是什麼?前面我們已經提到,程序員對自己的代碼都非常寬容,認為那是正確的沒有問題。實際上這種想法比較正常,程序是通過程序員思考和設計之後才寫出來,程序員不會將自己認為不正確的東西寫到代碼里,而到這個時候都一直假設程序是正確的;但人非聖賢,怎麼可能不犯錯誤來。實際上程序員在對待其他程序員時候的態度就很好,帶著一種挑剔和學習的態度;但一旦對待自己的代碼就很難這么做;這就是最致命的。程序員也必須對自己的代碼帶著挑剔和學習的態度;這個基礎是假設自己的代碼是錯誤的,然後需要做的是怎麼樣證明自己的代碼是正確的。程序員自身可以在程序生成的每個階段做這些工作:仔細的設計(這個時候畫點時間是值得的,必須保證我們對自己的程序有清晰的輪廓後才能開始動手寫)、編寫代碼時、單元測試(單元測試的重要性就不在贅婿了)、功能測試。
仔細的設計:這個的仔細是說在程序員編寫代碼之前,其必須對代碼的整個結構以及邏輯結構有明確的清晰的了解,只有這個時候才可以去寫代碼。這里沒有談到文檔,但我說到了一定要清晰的思路,但清晰的思路不是每個人都可以在腦袋中直接形成的,很多人都是普通人,沒有辦法在腦袋瓜中把所有問題都想清楚,那麼就記下來,特別對於復雜的邏輯。
編寫代碼:對於沒有把握的代碼,例如:新設計的演算法,最好保證其正確性。可以單獨將這部分測試,這可以讓代碼模塊化的同時又保證了代碼的正確性。一句話:少量的代碼保證質量還是比較簡單的。
單元測試:單元測試的重要性不在贅敘了,現在也有許多工具可以幫助程序員並減少工作量。
功能測試:程序員保證自己代碼質量的最後一關;為了做這樣的工作我們可能必須寫一些代碼來測試,甚至是測試工作。使用大量的 CASE 來測試,以及錯誤的 CASE 。這里和測試人員的測試不同之處在於:仍然讓程序員的注意力放在其自己的代碼范圍內,減小了排錯的難度。
如果你通過了以上的步驟都找不出你程序中有任何問題的話,那麼我想你的程序應該足夠健壯了。其實還有一點必須說明的就是:代碼 REVIEW 。
前面說道了程序員對待別人代碼的態度是挑剔和學習的態度,所以讓其他程序員來 REVIEW 你的代碼也是檢查程序有沒有邏輯錯誤的很好的辦法。團隊中應該交叉 REVIEW 代碼,這是實踐的經驗。
作為一個好的程序員必須有以上的習慣,以及對待自己代碼象孩子一樣,我們要愛惜我們的代碼,同時也要讓代碼走正確的路。

㈡ 程序員連續加班導致情緒崩潰,該如何學會自我調節呢

一、具體事件經過

2020年11月6日一位廚師在餐廳里發現一位男子在與家人通話時一直淚流不止,情緒非常崩潰,所以他在炒飯的時候特意多煮了香腸和荷包蛋,將其擺成了“100”的數字,並且安慰道總有一天會苦盡甘來的,這位男子聽完之後恢復情緒之後非常感謝他。

接著就是尋找產生不良情緒的原因,只有清楚地知道不良情緒產生的原因,才能夠對症下葯,真正地消除不良情緒,才能夠使得自我調節得到最佳的效果。凡事都是有因果的,改變因才可以牽動果的發生。原因的確定是方法尋找的前提,也是不良情緒消除的重要一環。程序員情緒崩潰,因為這是他第一次負責的項目,很可能是因為項目不在自己的能力范圍內,無法順利完成這一項目,所以分析其原因就是自己在工作上遇到了難題。

最後就是根據找到的原因,尋找解決的方法。就這一件事而言,程序員可以先通過傾訴的方式釋放自己的不良情緒,讓情緒得到一定恢復之後,就這一項目的難題向他人請教,找出解決問題的方法。只有這一事件本身得到解決之後,這一不良情緒才能夠根除。

㈢ 青島的外賣小哥幫崩潰的程序員寫代碼,你如何看待外賣小哥的這種行為

樂於助人的行為,還是很值得贊揚和學習的,畢竟當時那個男子情緒有點奔潰,情緒也有很不好,挺趕巧的碰到這個外賣小哥,幫了他一把,才緩解了男子的壓力還有情緒,對於我們來說可能是微不足道的小事,但是對於當時那個奔潰的程序員來說,外賣小哥應該就是個救世主吧。他們之間能夠相遇也是一種緣分。真的是正能量滿滿。

現在很多外賣小哥都是多才多藝。這幾年外賣的大軍突起,同時出現了很多送外賣的人員,經常能在新聞或者短視頻上面刷到他們,之前還有一個外賣小哥幫忙打游戲,用流利的英語和外國人溝通,做一些手工活等等,好像他們什麼都會,十項全能,樂於助人,讓人佩服。

每年都有很多關於外賣小哥的故事,每個故事背後都很感人,每個人的生活都不易,不過幸運的是,我們身邊都會出現一些溫暖的人,還有一些溫暖的事情,

能夠感動很多人的內心,善良的人都是會收到回報的,人間值得。

㈣ 當一個程序員寫不出代碼了,該怎麼辦

說明技術不夠,還得多學多練習。平常注意多多休息,良好的充足睡眠,才有更好的記憶力。

㈤ 青島外賣小哥幫崩潰程序員寫代碼,你如何看待他的行為

我們的生活節奏在不斷的加快當中,很多人為了讓自己的休息時間有更多,點外賣已經成為了很多加班年輕人最正常不過的事情了,他們可以利用等待外賣到來的時間裡面,做更加多的工作,企圖可以更快的把手頭中的工作解決了,之後就可以提前下班回家休息了,在這樣的社會風氣之下,更加多的人員都會點外賣,就為了減少不必要的吃飯時間,讓自己投入到更加緊張的工作當中去,而這樣只會引發人們對於身體健康的危機,彷彿也把工作的時間延長,讓自己難以有休閑的餘地。

㈥ 如何定位Release程序崩潰原因

以下是幾種常見的崩潰現象及對應的處理辦法:
1. 對於Release版本必現的崩潰且在Debug版本上也崩潰的程序。
解決思路:去掉所有斷點,直接在Debug版本上運行程序,在程序崩潰時,VC會自動跳轉定位到崩潰代碼行, 這種方法最簡單也最常用。
2. 對於在Debug版本上不崩潰但Release版本崩潰的程序,很有可能是Debug和Release版本的差異。例如Debug版本所有成員在構造時會被清0,而Release版本所有成員在構造時是內存裡面的原始值,而且Debug有運行時庫做保護,這些都會導致某些程序在Debug正常而Release崩潰。
解決思路:1)在程序中加列印,通過程序崩潰之前的列印定位出錯位置; 2)逐段注釋代碼,直到程序不崩潰為止。這種方法耗時較長,對程序員要求較高,而且對於那種不是必現的bug或者很難搭建執行環境的情況就較難處理了。
3. 對於在客戶現場崩潰的情況,顯然不適合直接帶一台電腦去調試。
解決思路:應該有文件記錄下崩潰信息,客服人員可以將崩潰信息文件發送給程序員,以便程序員查詢崩潰原因,然後利用編譯時生成MAP文件(工程信息文件,存放在版本編譯機中)的信息來定位問題函數或問題代碼行。下面就這種方法展開討論一下:
3 解決過程
對於上節第三種情況,也是最難解決的情況,解決過程如下:
1. 崩潰回調注冊,攔截Windows程序崩潰;
2. 在回調處理中,輸出崩潰原因,崩潰內存地址,崩潰堆棧;
3. 工程輸出map文件;
4. 通過崩潰內存地址以及map文件找出崩潰的函數。
5. 使用COD文件精確定位崩潰行

3.1 崩潰回調注冊
實際上,只靠Windows的錯誤消息對話框提供的信息量是很有限的。用SetUnhandledExceptionFilter注冊自定義錯誤處理回調函數,可以替換Win32默認的異常處理過濾器(top-level exception filter),而且能列印出崩潰堆棧,這對定位崩潰原因非常有用。
SetUnhandledExceptionFilter的函數原型:

LPTOP_LEVEL_EXCEPTION_FILTER SetUnhandledExceptionFilter(
LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter );

功 能:注冊和注銷異常處理回調;
用 法:第一次調用注冊異常處理回調,第二次調用注銷;
返回值:返回當前的exception filter。需要保存這個函數指針,在注銷異常處理回調的時候,以此為參數再次調用SetUnhandledExceptionFilter。列印異常處理也需要此值。
參數: 異常處理的回調函數;

3.2 輸出崩潰信息
崩潰信息在異常回調函數中列印,輸出到程序執行目錄下的文件:
異常處理回調的函數原形:

LONG WINAPI CallBackDebugInfo ( EXCEPTION_POINTERS *pException);

功 能:異常處理回調處理,列印崩潰信息;
用 法:注冊自定義錯誤處理回調:SetUnhandledExceptionFilter (CallBackDebugInfo);
返回值:EXCEPTION_CONTINUE_EXECUTION – 錯誤已經被修復,從異常發生處繼續執行
EXCEPTION_CONTINUE_SEARCH – 繼續查找異常過濾器
EXCEPTION_EXECUTE_HANDLER – 正常返回
參數: 崩潰信息結構,包含崩潰原因、崩潰模塊、崩潰地址、崩潰堆棧等;
常見崩潰原因有:
EXCEPTION_ACCESS_VIOLATION = C0000005h 讀寫內存錯誤
EXCEPTION_INT_DIVIDE_BY_ZERO = C0000094h 除0錯誤
EXCEPTION_STACK_OVERFLOW = C00000FDh 堆棧溢出或者越界
EXCEPTION_GUARD_PAGE = 80000001h 由Virtual Alloc建立起來的屬性頁沖突
EXCEPTION_NONCONTINUABLE_EXCEPTION = C0000025h不可持續異常,程序無法恢復執行,異常處理常式不應處理這個異常
EXCEPTION_INVALID_DISPOSITION = C0000026h在異常處理過程中系統使用的代碼
EXCEPTION_BREAKPOINT = 80000003h 調試時中斷(INT 3)
EXCEPTION_SINGLE_STEP = 80000004h 單步調試狀態(INT 1)

3.3 輸出map文件
map文件記錄程序的全局符號、源文件和代碼行號信息,是整個程序工程信息的靜態文本。通過文本閱讀工具如Ultra Edit或記事本就可以打開Map文件。
在 VC 中,打開「Project Settings」選項頁,選擇 C/C++ 選項卡,並在最下面的 Project Options 裡面輸入:/Zd ,然後選擇 Link 選項卡,選中「Generate mapfile」復選框。並在最下面的 Project Options裡面輸入:/mapinfo:lines,表示生成 map 文件時,加入行信息。

最後編譯就可以生成 MAP 文件,可以在工程的Debug或Release目錄下找到剛剛生成的MAP文件,文件名為「工程名.map」。

3.4 使用map文件找出崩潰函數
通過上面的步驟,已經得到了 MAP 文件,那麼我們該如何利用它呢?下面一步步演示使用MAP文件定位程序崩潰行的過程。
1.我們先在代碼中加入非法內存操作(最常見的異常)的代碼:

BOOL CMainFrameDlg::OnInitDialog()
{
::SetProp(m_hWnd, AfxGetApp()->m_pszExeName, (HANDLE)1);
s32 *p = NULL;
*p= 123;

2.執行程序,程序在開始就異常,在異常列印文件中列印了如下信息:

======================== 崩潰信息 ==========================
崩潰時間: 2009/06/02 16:58:22
崩潰原因: 非法內存操作
異常代碼 = c0000005
異常地址 = 0x0045a76f
異常模塊: E:\ccroot\liuxiaojing_Enterprise\Enterprise_VOB\70-nms1\pcmt2\prj_win32\Release\pcmt2.exe
Section name: .text - offset(rva) : 0x0005976f
---------------------- Trips of Stack ----------------------
E:\ccroot\liuxiaojing_Enterprise\Enterprise_VOB\70-nms1\pcmt2\prj_win32\Release\pcmt2.exe
name : pcmtver - location: 2bef

3. 確定崩潰地址是:0x0005976f,在Map文件中定位函數:

0001:00059420 ?OnCreate@CMainFrameDlg@@IAEHPAUtagCREATESTRUCTA@@@Z 0045a420 f MainFrameDlg.obj
0001:00059460 ?SetTooltips@CMainFrameDlg@@AAEXXZ 0045a460 f MainFrameDlg.obj
0001:00059700 ?OnTranslate@CMainFrameDlg@@IAEJIJ@Z 0045a700 f MainFrameDlg.obj
0001:00059730 ?OnInitDialog@CMainFrameDlg@@MAEHXZ 0045a730 f MainFrameDlg.obj
0001:00059a10 ?OnSysCommand@CMainFrameDlg@@IAEXIJ@Z 0045aa10 f MainFrameDlg.obj
0001:00059c20 ?OnPaint@CMainFrameDlg@@IAEXXZ 0045ac20 f MainFrameDlg.obj

根據00059730< 0005976f < 00059a10 ,確定是在CMainFrameDlg 的OnInitDialog函數中的某一行產生了異常。
3.5 使用map代碼行定位崩潰行區間

Line numbers for .\Release\MainFrameDlg.obj(E:\ccroot\liuxiaojing_Enterprise\Enterprise_VOB\70-nms1\pcmt2\source\MainFrameDlg.cpp) segment .text
498 0001:00059647 499 0001:00059667 501 0001:0005966e 502 0001:000596af
503 0001:000596ed 506 0001:00059700 507 0001:00059703 508 0001:00059708
510 0001:0005970f 511 0001:00059720 512 0001:00059723 515 0001:00059730
516 0001:0005974e 521 0001:0005976d 524 0001:0005977e 526 0001:0005978b

我們在map文件的代碼行信息里查找不超過計算結果0x0005976f,但可以找最接近的數。發現是MainFrameDlg.cpp 文件中的:521 0001:0005976d,而程序實際崩潰行在519(注釋行和空行也要計算在內),非常接近實際崩潰行了,考慮到程序實際執行的是匯編指令,我們可以在(516 ~524)行區間內尋找到實際崩潰行。

3.6 無法定位崩潰的情況
但是這種輸出文件的方法也不能定位所有崩潰問題,俗話說得好:沒有萬能的救世主。
例如我們有時會碰到下層編解碼器崩潰,崩潰列印如下表:

======================== 崩潰信息 ==========================
崩潰時間: 2009/05/07 09:48:17
崩潰原因: 非法內存操作
異常代碼 = c0000005
異常地址 = 0x02163b32
異常模塊: C:\WINDOWS\system32\kdg7221.acm
Section name: .text - offset(rva) : 0x00002b32
---------------------- Trips of Stack ----------------------
C:\WINDOWS\system32\kdg7221.acm

這時可以看出是我們的音頻解碼器kdg7221.acm崩潰了,此時就要考慮我們的音頻編解碼參數是否設置錯了,如果沒有設錯,bug可以轉到媒體處理層或者軟體一部處理。

㈦ 青島外賣小哥幫崩潰程序員寫代碼的視頻走紅網路,此事件的原委是什麼樣的

作為成年人,我們每一個人都要肩負著許多壓力,負重前行,為了自己和家人更美好的生活。青島外賣小哥幫崩潰程序員寫代碼的視頻走紅網路,此事件的原委是什麼樣的?關於這個話題,讓我們一起來討論一下吧!

關於“青島外賣小哥幫崩潰程序員寫代碼的視頻走紅網路,此事件的原委是什麼樣的?”這個話題,以上就是我的觀點,各位有何想法?歡迎到評論區積極留言。

㈧ 程序員加班崩潰,青島一外賣小哥主動幫忙寫代碼,這一幕有多暖心

這件事情的開頭就是這位程序員和朋友在飯店一起看球賽,可是吃飯途中沒有想到公司電話不斷,可能是有什麼需要及時解決,小夥子不得不拿出隨身攜帶的筆記本,因為房間內比較嘈雜,他徑直走出門外坐在台階上打開電腦,可能是因為比較著急看球賽,一時間操作不當亂了套有些崩潰,結果剛好有一位外賣小哥經過,耐心的詢問之後,然後拍拍這位程序員肩旁,坐下來耐心幫其解決了,這個視頻一經發出,網友們都贊嘆聲一片,所以好感嘆,外賣行業人才濟濟啊!

外賣行業雖然是個備受爭議的職業,但是有多少人願意這樣簡單快樂還能亂跑的崗位,沒有拘束,沒有上下班的限制,自由愉快,嚮往這樣簡單生活的人也是單純而善良的,他們讓我們的生活更加了便利,然而愛心又是無處不在。

㈨ 青島外賣小哥幫崩潰程序員寫代碼的視頻走紅網路,網友對此有何評價

青島外賣小哥幫助崩潰程序員寫代碼。大家就是覺得打英語是真正的高,人往往都是出現了一些奇奇怪怪的地方,而且外賣員這個行業確實是容納百川什麼樣的人都有,有人確實是沒有什麼文化水平,只能被迫做這個,但有人是選擇做這個那是不一樣的。

有很多人最終選擇了跨行業,不做自己原來的行業了,選擇去送外賣,是因為原來的行業壓力太大,人家並不是只能送外賣,而是說選擇送外賣這種方式作為調節自己壓力的一種選擇,因為不同的行業的人本身的視角就不同,沒有送過外賣的覺得送外賣雖然辛苦一些,但是每天也能看到很多路上的風景,如果不單純的是為了賺到更多的錢的話,就是除了透透氣順便賺點零花錢,那這也算是一個不錯的選擇,雖然剛開始的時候也都不好做,水很深。

㈩ 當程序員寫不出代碼了,該怎麼辦

你已經對著電腦 n 個小時了。敲鍵盤正成為一種負擔,你在想,鍵盤是否就像西西弗斯推著的那塊巨石。

咖啡一杯接著一杯。不敢再喝了,因為搞不好要有副作用了,心跳加速,身體不由自主地顫抖,出冷汗,但還是無法產出任何代碼。

所有重新發現編程趣味的努力都徒勞無功,因為你的最後一點能量都用來驅逐大腦中正在攻城略地的話:

「我寫不出代碼了!」

總的來說,這個理念就是要你忘記手頭的問題,讓你的意識心靈沉浸到其他的事情中。此時,你的潛意識則開始連接要點,朝著頓悟的方向前行。

我們可以做些什麼以便於幫助大腦在發散思維的模式下工作呢?放輕松就好了:

最後再說一句,如果你絞盡腦汁,卻仍然無法解決問題,那麼不妨先放一放。通過潛意識的運作,搞不好突破性的想法就會靈光乍現。

閱讀全文

與程序員代碼崩潰怎麼辦相關的資料

熱點內容
曲式分析基礎教程pdf 瀏覽:14
php生成靜態html頁面 瀏覽:964
怎麼分割pdf 瀏覽:812
壓縮垃圾報警器 瀏覽:628
小公司一般都用什麼伺服器 瀏覽:967
java獲取時間gmt時間 瀏覽:819
為什麼csgo一直連接不到伺服器 瀏覽:503
安卓登ins需要什麼 瀏覽:835
機器人演算法的難點 瀏覽:225
全自動化編程 瀏覽:725
程序員高薪限制 瀏覽:692
壓縮圖片壓縮 瀏覽:75
美國發明解壓魔方 瀏覽:302
電腦怎麼備案網上伺服器 瀏覽:514
旅行商問題Python寫法 瀏覽:952
解壓破壞王裡面的所有兌換碼 瀏覽:860
文件夾如何拖拽還保留原來的 瀏覽:22
職業生涯pdf 瀏覽:954
ubuntu安裝軟體php 瀏覽:160
黑馬程序員退學流程 瀏覽:362