2011-01-16 9 views
2

Ich habe JCL in Delphi installiert 2010. Im folgenden CodeJclLastExceptStackListToStrings erzeugt eine leere Zeichenfolge Liste

try 
    raise Exception.Create('Error Message'); 
except 
    on E: Exception do 
    begin 
    ResultStatus := JclLastExceptStackListToStrings(sl, True, True, True, True); 
    end; 
end; 

Auch habe ich diesen Aufruf im Initialisierungsabschnitt:

initialization 
    JclStartExceptionTracking; 

ResultStatus falsch ist und sl ist leer. Ich habe Optionen zum Generieren von Map- und .jdbg-Dateien festgelegt. Andere Funktionen wie ProcByLevel funktionieren gut. Gibt es noch etwas, das ich tun muss, damit JclLastExceptStackListToStrings funktioniert?

Von JclDebug.pas Datei:

Zuletzt geändert: $ Date :: 2010-09-07 19.43.19 0200 Revision (mar, 7. September 2010..): $ Rev :: 3331

+0

Es wäre gut, wenn Sie zurückkommen und sagen würden, was passiert ist, und die Antwort angenommen hat, die funktioniert hat! –

+0

Leider kenne ich den Grund nicht.Ich habe alles neu installiert (einschließlich IDE) und ein neues Projekt gestartet. Es mag also eine Reihe von Gründen gegeben haben, aber ich hatte keine Zeit herauszufinden, was genau es war. – Max

+0

Ich bekomme das gleiche Verhalten bei der Verwendung von XE2. Ich finde, dass ich 1 Ausnahme hinterlasse. Das heißt, ich bekomme Ergebnisse im zweiten Durchgang. –

Antwort

1

Try

JclStartExceptionTracking; 

ganz am Anfang Ihrer Anwendung aufrufen.

[Bearbeiten] Sie sind bereits. Dann habe ich momentan keine Vorschläge. [/ Edit]

+0

Er ruft es im Initialisierungsabschnitt an. Würdest du ihn früher oder später anrufen lassen? Wenn früher, wie? –

+0

Er hatte das noch nicht erwähnt, als ich diese Antwort gepostet habe (siehe das Bearbeitungsprotokoll). Ich werde meine Antwort aktualisieren, um Verwirrung zu vermeiden. –

0

Ich benutze:

JclStackTrackingOptions: = [stStack, stExceptFrame, stRawMode, stAllModules, stStaticModuleList];

0

ich dieses Problem lösen in Delphi XE 1.

  1. öffnen Projektoptionen Menü
  2. offen Delphi-Compiler Baumknoten
  3. wählen Verknüpfung Baumknoten
  4. Debug aktivieren Informationen Kontrollkästchen
0

Ich habe mit diesem Problem für ein paar Tage festgefahren. Das JCL-Stack-Tracking funktionierte mit meinen Programmen und ich konnte den Fehler lokalisieren. Irgendwie hat es einfach aufgehört zu arbeiten.

Dann habe ich mit JCL Demo gearbeitet, um zu sehen, ob es ohne Probleme funktioniert. Es hat sehr gut funktioniert. Ich habe alle Projektoptionen mit der Demo gleich eingestellt und trotzdem hat mein Programm den Stack nicht gedumpt, während die Demo immer funktionierte.

Plötzlich bemerkte ich, dass der einzige Unterschied zwischen meinem Programm und der Demo CPU-Architektur ist. Demo ist 32 Bit und mein Programm ist 64 Bit.

Ich kompilierte die JCL Demo als 64 Bit und es funktioniert nicht mehr. Es funktioniert nur mit 32-Bit-Code. Nicht 64 Bits.

Leider benötigt mein Programm 6-7 Gigabyte Speicher und ich kann den 32-Bit-Modus nicht verwenden. Ich schlage vor, Eurekalog zu verwenden, da es für beide Architekturen funktioniert.