2011-01-07 93 views
5

在delphi 2007應用程序中,我們使用madExcept來處理對我們的擴展。我們使用標準對話框,讓用戶發送郵件報告,如果他想。madExcept,獲得當前堆棧頂部

我們希望爲此功能添加一點。如果用戶選擇不發送完整報告,我們仍然希望將該例外記錄到文件中,但不是完整的報告。我們需要異常類和消息,以及源文件和行號。

前兩個很容易,但我找不到找到後者的簡單方法。

我有一個IMEException界面的完整例外報告。據我所知,調用堆棧只能通過BugReportSections屬性獲得,它以純文本形式提供給我。

在madStackTrace.pas中,有一個StackTrace()-功能應該給我我想要的。這需要大量的參數,該文檔是信息有點短..

問: 是否有人知道正確的參數送入StackTrace(),所以它只能從返回堆棧的頂部項拋出異常的線程?

回答

5

madStackTrace.pas有另一個功能,StackAddrToStr只需要一個地址,並返回格式化文本。如果您在崩潰線程的except塊中,則可以將全局變量ExceptAddr傳遞給它。如果你在其中一個madExcept回調函數中使用`IMEException.ExceptAddr'。

+0

仍然返回一個字符串,但是這個引導我從madMapFile.pas中獲取GetMapFileInfos(),這可能會給我我想要的。 – Vegar

+0

我想我可能已經找到了我需要的StackTrace,但是:'StackTrace(true,false,false,@stack,exception.ExceptAddr,true,false);' – Vegar

+0

@Vegar如果它正在工作,應該接受此答案 – mjn