我想你可以使用AddVectoredExceptionHandler API函數。
下面是關於如何使用一個小樣本:
var
f : TFileStream;
function VectoredHandler(ExceptionInfo : PEXCEPTION_POINTERS): LongInt; stdcall;
var
s : String;
begin
S := Format('Exception code %x address %p'#10#13, [ExceptionInfo^.ExceptionRecord^.ExceptionCode,
ExceptionInfo^.ExceptionRecord^.ExceptionAddress]);
f.WriteBuffer(PChar(s)^, Length(s) * sizeof(wchar));
FlushFileBuffers(f.Handle);
OutputDebugString(PChar(Format('ExceptionCode: %x', [ExceptionInfo^.ExceptionRecord^.ExceptionCode])));
result := EXCEPTION_CONTINUE_SEARCH ;
end;
initialization
AddVectoredExceptionHandler(0, VectoredHandler);
嗚呼!這就是它:)非常感謝這個提示!並備案:1)簽名的'RaiseExceptObjProc':'程序(P:PExceptionRecord)'2)看來我沒有打電話給老'RaiseExceptObjProc'在我的處理程序3)我讀的地方,這是可用,因爲德爾福2009(對我有好處),但我不確定這個 – 2010-04-13 11:25:09
好的SysUtils.pas已經分配了'RaiseExceptObjProc'。也許這應該被我的處理程序調用。 – 2010-04-13 11:51:05
嘿,你能舉個例子嗎? :) – PresleyDias 2012-07-17 07:12:27