![]() |
Problem mit der JCL Debug Extension
Ich habe ein Problem mit der JCL Debug Extension, dass mir die Jedi-Profis hier im Board vielleicht erklären können.
In der Datei "Howto.txt" steht u.a. jcl/examples/vcl/debugextension/Howto.txt Each executable file in the project can use different option from those listed above. Das geht bei mir aber absolut nicht. Wenn ich den Haken bei "Insert JCL Debug Data" setze, dann gilt das immer für alle Projekte (und das auch oft erst nach einem Neustart der IDE). Und wenn man sich die "JclOTAUtils.pas" ansieht, dann stellt man fest, dass die Einstellung in der Datei "JediOTA.ini" im Delphi-bin-Verzeichnis abgelegt wird und somit überhaupt nicht projektspezifisch sein kann. Ich bräuchte aber wirklich eine Unterscheidung auf Projektebene. Ich hatte ja gehofft, dass ich das einfach darüber steuern kann, ob eine MAP-Datei erzeugt wird oder nicht. Der Experte aktiviert die Option "Map-Datei: detailliert" aber jedes Mal wieder von selbst. Alternativ würde mir natürlich auch ein Tool helfen, mit dem ich die "JCLDEBUG"-Sektion aus der PE-Datei entfernen kann (möglichst per Kommandozeile). Noch besser fände ich den umgekehrten Weg: ein Kommandozeilenzool auf Basis des IDE-Experten, dass die "JCLDEBUG"-Sektion aus dem Mapfile erzeugt, wenn es existiert (zumal man demnächst in D2K6 ja "Aktionen nach dem Build" definieren kann). Ehe ich jetzt anfange, in den Quellen herumzupatchen, wüsste ich gerne, ob ich hier irgendeine Einstellungsmöglichkeit übersehen oder noch nicht erkannt habe. |
Re: Problem mit der JCL Debug Extension
"Map-Datei: detailliert" braucht der Experte damit er ueberhaupt funktionieren kann.
Das MAP file wird entweder direkt verwendet oder komprimiert und an das EXE getackert. |
Re: Problem mit der JCL Debug Extension
Zitat:
Vielleicht habe ich mich oben nicht deutlich genug ausgedrückt: ich suche eine Möglichkeit, das Einbinden der Debug-Daten auf Projektebene steuern zu können. Ich werde wohl einfach die 5-6 Zeilen in der JclDebugIdeImpl.pas ändern, so dass ich das über das Kennzeichen "Map-Datei: detailliert" steuern kann. |
Re: Problem mit der JCL Debug Extension
Für alle, die es auch brauchen / haben möchten.
Die folgenden Änderungen an der Datei "jcl\examples\vcl\debugextension\JclDebugIdeImpl.p as" bewirken, dass der Experte die Option "Map-Datei: detailliert" nicht selbstständig abändert sondern statt dessen die Einstellung als (zusätzlichen) Schalter benutzt, ob die JCLDEBUG-Informationen in die Datei eingebunden werden. Nochmal einzeln: 1. Der Schalter "Projekt" > "Insert JCL debug data" steuert, ob der Experte überhaupt aktiv ist. 2. Ist er aktiv, dann steuert man über "Projekt" > "Optionen..." mit der Einstellung "Map-Datei" auf der Seite "Linker", ob die Debug-Daten wirklich eingebunden werden. 2a. Einstellung "detailliert" -> ja 2b. Andere Einstellung -> nein Hier ein Unified Diff zur Originalversion (JCL 1.95 aus dem Build 1848). Deaktivierte Zeilen wurde nicht entfernt sondern auskommentiert.
Code:
--- JclDebugIdeImpl.pas.orig Mon Mar 21 04:04:14 2005
+++ JclDebugIdeImpl.pas Sun Nov 27 23:11:03 2005 @@ -187,4 +187,6 @@ begin if FInsertDataAction.Checked and Assigned(FCurrentProject) then + // VS: added to control the feature on a per-project basis via map file settings + if FSaveMapFile = MapFileOptionDetailed then begin ProjOptions := FCurrentProject.ProjectOptions; @@ -260,4 +262,5 @@ if FInsertDataAction.Checked then begin + { // VS: moved check for installed packages to the bottom if IsInstalledPackage(Project) then begin @@ -267,4 +270,5 @@ end else + } begin FCurrentProject := Project; @@ -273,6 +277,14 @@ FOptionsModifiedState := ProjOptions.ModifiedState; FSaveMapFile := ProjOptions.Values[MapFileOptionName]; + { // VS: removed to control the feature on a per-project basis via map file settings if FSaveMapFile <> MapFileOptionDetailed then ProjOptions.Values[MapFileOptionName] := MapFileOptionDetailed; + } + // VS: moved check for installed packages here + if (FSaveMapFile = MapFileOptionDetailed) and IsInstalledPackage(Project) then + begin + MessageDlg(Format(RsCantInsertToInstalledPackage, [Project.FileName]), mtError, [mbNo], 0); + FSaveMapFile := 0; + end; end; end; |
Re: Problem mit der JCL Debug Extension
Zitat:
![]() Die Funktion komprimirt das map file und hängt es an die Exe an. Ein detailiertes Map File muß vorhanden sein. Nur in dem detailierten sind die Zeilennummern des Quelltextes zugeordnet. Es sollte nun ein Leichtes sein, das Passende Programm um diese Funktion zu schreiben. Viel Spaß ps: Schau auch mal in die JCL\examples\vcl\debugextention\tools\MapToJdbg.dp r :mrgreen: |
Re: Problem mit der JCL Debug Extension
Zitat:
Zitat:
Zitat:
Aber: meine Lösung funktioniert genau so, wie ich es mir gewünscht habe: ich kann das Feature über einen Schalter auf Projektebene ein- und ausschalten. Und wenn ich keine Debug-Infos in der Datei haben will, dann brauche ich auch kein detailliertes Mapfile. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz