2009-11-16 5 views
9

Utilizzando Delphi 7, come posso ottenere una stringa che rappresenta lo stack trace da un Exception?GetStackTrace in Delphi 7?

try 
    SomethingDodgy(); 
except 
    on E:Exception do begin 
    // print stack trace 
    Log.Write(/* ??? */); 
    end; 
end; 

Ho sentito che c'è una funzione getStackTrace nell'ultima Delphi, ma non riesco a trovare nulla per Delphi 7. No, l'aggiornamento non è un'opzione :)

+3

Si noti che il metodo 'GetStackTrace' nelle nuove versioni di Delphi non restituisce effettivamente una traccia dello stack. Hai comunque bisogno di un framework di eccezioni esterne. – jpfollenius

+1

È possibile impostare JCL in pochi minuti. Ho pubblicato un esempio su questa domanda SO: http://stackoverflow.com/questions/1259563/good-os-delphi-exception-handling-libraries/1260262#1260262 – Runner

risposta

-1

Lo stack-trace in Win32 non è buono come .NET o Java (e l'ultimo verso di Delphi utilizza la traccia dello stack .NET).
In ogni caso, ho trovato un collegamento che fornisce ulteriori informazioni su di esso here (È su ExeEx in modo da consentire di visualizzare tale soluzione fare clic sul primo collegamento nella ricerca).

Vedere la parte inferiore della pagina.

+1

-1. Scambio di esperti: "Tutti i commenti e le soluzioni sono disponibili solo ai membri del servizio Premium." –

+0

Ti ho detto di leggere in fondo! Ci sono soluzioni. Si prega di leggere correttamente prima del downvoting! –

+0

@Dmitriy: No non ci sono soluzioni. Non in fondo e non da nessun'altra parte. – jpfollenius

15

Si potrebbe provare a utilizzare madExcept, un meraviglioso framework di gestione delle eccezioni.

madshi contiene un mucchio di codice di esempio; Sono sicuro di aver usato le cose dello stack-trace lì prima.

Come notato da Dmitriy, lo JCL dispone anche di codice di stack-trace; un vecchio campione è here.

+0

Sì, madExcept è fantastico - ma questo è il codice commerciale che sto scrivendo, e non credo di poter ottenere la compagnia per comprare madExcept al momento. Anche JCL suona bene, darò un'occhiata .. – Blorgbeard

+3

Non è poi così costoso. Quante ore di lavoro dovresti dedicare a questo? –

+0

Sì, ma la traccia dello stack è un bel regalo in questo progetto, quindi non passerò molto tempo a cercare di aggirarlo. – Blorgbeard

1

MemChk è piuttosto facile da usare (in particolare per cercare/trovare perdite di memoria) e sa come eseguire il rendering di una traccia di stack da un indirizzo di codice.