AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit der JCL Debug Extension

Ein Thema von Flocke · begonnen am 27. Nov 2005 · letzter Beitrag vom 28. Nov 2005
Antwort Antwort
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Problem mit der JCL Debug Extension

  Alt 27. Nov 2005, 13:26
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.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#2

Re: Problem mit der JCL Debug Extension

  Alt 27. Nov 2005, 15:01
"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.
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: Problem mit der JCL Debug Extension

  Alt 27. Nov 2005, 15:53
Zitat von Robert Marquardt:
"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.
Diese Fakten sind mir durchaus bekannt.

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.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

Re: Problem mit der JCL Debug Extension

  Alt 27. Nov 2005, 22:32
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;
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.837 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

Re: Problem mit der JCL Debug Extension

  Alt 28. Nov 2005, 06:15
Zitat von Flocke:
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).
Schau Dir mal die Funktion Delphi-Referenz durchsuchenInsertDebugDataIntoExecutableFile an.

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
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: Problem mit der JCL Debug Extension

  Alt 28. Nov 2005, 07:18
Zitat von MaBuSE:
Schau Dir mal die Funktion Delphi-Referenz durchsuchenInsertDebugDataIntoExecutableFile an.

Die Funktion komprimirt das map file und hängt es an die Exe an.
Weiß ich.
Zitat von MaBuSE:
Ein detailiertes Map File muß vorhanden sein. Nur in dem detailierten sind die Zeilennummern des Quelltextes zugeordnet.
Weiß ich auch
Zitat von MaBuSE:
Es sollte nun ein Leichtes sein, das Passende Programm um diese Funktion zu schreiben.
Mache ich sobald ich es brauche (D2K6? überhaupt?) Wäre als Kommandozeilenprogramm echt ein "Wenigzeiler".

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.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz