- 讓客戶滿意。
- 不要以爲它不是你的DLL,它可能是。即使「其他人使用相同的方式使用軟件從未遇到過崩潰」,它可能是與不同的數據,它做不同的事情...
- 我建議你設置日誌記錄到文本文件一個「特殊」的診斷版本。
- 記錄一切,您的參數,您的例外情況以及您正在經歷的步驟。甚至可能是每個函數的開始和結束,以及其他每一行。
下面是它怎麼會看...
Loaded DLL
Started MyFunction1 with parameters: 1,4,hello
1
2
...
500
Ended MyFunction1
,以使該,,,我最好設置的一些功能(在自己的單位):
// opens a text file (fixed name), and appends to it.
function InitializeLog;
// closes the file
function CloseLog;
//add a log line.
function Log(message:string='', startNewFunction:boolean:False);
你會這樣稱呼它:
function MyFunction1(Integer,Integer,String);
begin
try
Log('Loaded DLL');
//use inttostr and do some string concats to get the params
Log('Started MyFunction1 with parameters: 1,4,hello',true);
//Then every other line:
Log;
//this would increment a global variable FuncLine:Integer
//and write it to the file.
except
On E:Exception (Log('***'+E.Message));
end;
end;
像這樣的東西應該有一個{$ DEFINE}啓用這些日誌記錄功能,以啓用/禁用診斷日誌記錄。
This could also be useful.
我非常同意。我以前曾經在這個地方工作過很多次,最快的解決方案一直是創建一個新的可重複測試程序,並將其提供給供應商提供完整的源代碼。如果可能,記錄與API的所有交互(正在傳遞哪些參數以及返回的內容)。 – skamradt 2009-06-25 16:16:41
供應商說Dave的DLL是錯誤的。供應商是誰應該制定測試計劃,而不是戴夫,因爲供應商是真正看到問題的人。如果不是測試程序,那麼至少要列出一系列步驟來證明問題。 – 2009-06-25 17:39:25
我不認爲供應商看到這個。我認爲這是戴夫的顧客。無論如何,我同意供應商應該加強工作,至少幫助解決問題。不幸的是,他們似乎並不急切,所以落到戴夫身上可以幫助他們說服他們存在問題,或者找到解決辦法。誰知道,重複這個問題,他可能會發現他畢竟犯了一個錯誤。底線;戴夫讓他的顧客擔心。 – 2009-06-25 19:14:48