2011-07-11 58 views
1

剛纔我接受了ca(Computer Associates)對C++開放的採訪。您將如何處理糾正無響應的應用程序?

問:有一個應用程序可以連續運行好幾天..在某一天它會變得無法響應/被絞死。您將如何調試/糾正應用程序。您的第一步將是什麼?

答:我回答開始..有內存使用的詳細信息/ CPU檢查usage..checking如果一些所需的資源是可用...或者,如果它是網絡的約束,如果網絡直播..等等。

問:他告訴..這些都是表面的東西..假設沒有這樣的問題there..then?

答:我告訴最好的辦法是檢查調試日誌,如果他們enabled..and如果他們arent..give客戶調試啓用應用程序,並在現場進行測試。 因爲應用程序是間歇性掛起的,所以很難通過任何其他方式檢測它爲什麼會無響應。並且調試日誌會告訴我應用程序在什麼時刻開始發瘋,以找到具體操作的根本原因負責任的需求被認識,調試日誌是我認爲最好的選擇。

面試官轉到另一個問題說..好吧。

所以,是我的回答好enough.Any另一種方法,一個好的程序員會跟進?

+1

「有一個應用程序」是如此模糊。 –

+0

@Martinho是的,我同意! – ashishsony

回答

6

,使用WinDbg或創建一個(小型)轉儲文件並在Visual Studio中加載它。加載調試符號的所有版本的二進制文件,並清楚地看到它是掛

這應該是一個體面的第一步

編輯我當然是(愚蠢)假設窗口沒有明顯的原因。在Unix/Linux,這將是即使使用straceptracegdb --remotepstackdtrace(如果它的存在)等

編輯同樣使用WMI性能計數器容易/ perfmon的是,一般一個非常好的做法。這可能會有一些亮點(但我確定面試官正在尋找'如何檢查正在運行的應用程序'類型的答案;這略微傾向於您已經在您的系統中提及的'依賴日誌'方法自己的答案)

+1

即使沒有調試符號,這至少也是一個開始,因爲您可以找到我們的代碼卡在什麼模塊中。如果可以,請不要忘記進行多次轉儲,這會告訴您程序是否處於死鎖狀態,或無限循環。 –

2

大部分的時間,因爲他們是非常主觀的這些問題不能回答的地步的。他們通常被要求評估潛在候選人如何解決問題,並展示一些調試問題的建設性方法。只要答案顯示解決問題的一些合理的方法,答案是好的。

你的回答很好。爲了增加它,最重要的是確定發生問題的用例/模式。如果問題很容易重現,它是可以解決的。所以我會嘗試定義重現問題的步驟,然後繼續解決問題。

相關問題