|
![]() |
Registriert seit: 23. Jan 2005
Hallo!
Jetzt möchte ich Euch mal ein kleines Projekt vorstellen. Es handelt sich um eine sehr einfach gehaltene IDE für den Freepascal Compiler. Zu diesem Projekt motiviert wurde ich einerseits durch den Umstand, das der Freepascal Compiler, von Lazarus abgesehen, noch immer mit der etwas angestaubten Turbo Vision IDE geliefert wird, obwohl es leistungsfähige Windowas Entwicklungsumgebungen gibt. Wenn das Freepascal Team von dem einige, wie ich den Eindruck gewonnen habe, auch hier in der DP angemeldet sind, bereit ist, diese IDE an Stelle der alten, mit FreeVision geschriebenen zu verteilen, werde ich den Debugger noch versuchen, nachzurüsten und ebenso die Codevervollständigung. In diesem Fall wird diese IDE OpenSource. Andererseits fasziniert mich der Formulardesigner von Delphi. Weil es da zahlreiche Nachbauten gibt, die ich gerne nachvollziehen möchte und außerdem mir eine Lösung hirfür unter Nutzung von Quellcode aus der DP und aus dem sonstigen Internet zusammengestellt habe, brauche ich vollständigkeitshalber eine IDE, in die ich diesen Designer einbauen kann. In der vorliegenden Version der IDE ist jedoch kein Form-Designer eingebaut. In dieser Version gibt es noch keinen intergrierten Debugger, obwohl die Menüeinträge dafür bereits vorhanden sind. Auch gibt es noch keine Codevervollständigung, obwohl auch hier die Menüeinträge dafür vorhanden sind. Werden die betreffenden Menüeinträge ausgewählt, passiert nichts, außer dem Schließen des Menüs. Auch funktioniert der Aufruf des Konsolenfensters noch nicht im Menü "Datei->DOS aufrufen". Die integrierte Hilfe, folgt, wenn die IDE fertig ist. Das ist der Fall, wenn alle Funktionen, die im Menü sichtbar sind, auch alle funktionieren. Der Freepascalcompiler muss über das Menü "Tools->Tools einrichten" in die IDE integriert werden. Das funktioniert exakt so, wie das mit dem Einrichtungsdialog der Delphi IDE funktioniert. Ich habe diesen Dialog so gestaltet, wie er bis Delphi 7 gestaltet war. Alternativ kann der Programmpfad Eures Freepascal Compilers auch in die Datei "fp.tls" eingetragen werden. Ich habe vor den Pfad dort das Wort "Compiler" gesetzt, welches im Menü "Tools" erscheint, wenn der Compiler in der IDE bekannt ist. Nach einem Leerzeichen folgt der Compilerpfad. ACHTUNG: ---------------------------------------------------------------- Der Aufruf des Compilers muss über das Menü Compiler erfolgen! Bei Aufruf über das Tools Menü wird eine Exception ausgelöst! ---------------------------------------------------------------- Wer das gute alte Turbo Pascal noch kennt oder bereits mit der Textmode IDE von Freepascal gearbeitet hat, sollte mit dieser IDE auf Anhieb zurecht kommen. Getestet habe ich das Design mit Registern für den Quelltexteditor, wie das aus der Delphi IDE bekannt ist. Die MDI Variante ist noch fehlerhaft und deshalb empfehle ich dieses Design nicht. Unterhalb des Quelltexteditors gibt es 4 Fenster in Registern angeordnet. Diese sind: -Compiler-Ausgaben -Debugger Ausgaben(derzeit noch uninteressant) -Ausgaben Ihrer Anwendung -Meldungen Compiler Ausgaben: Hier erscheinen alle Meldungen des Compilers während der Übersetzung. Ausgaben Ihrer Anwendung Hierhin schreibt das übersetzte Programm alle Ausgaben. Unter "Optionen->Umgebungseinstellungen->Vorgaben kann dieses Verhalten so geändert werden, das die Programmausgaben in die Windowsconsole umgeleitet werden. Meldungen Hier sollen Fehlermeldungen der Anwendung sichtbar werden. Jetzt warte ich auf Eure möglichst konstruktive Kritik.
Damit der Topf nicht explodiert, lässt man es ab und zu mal zischen.
|
Delphi 7 Personal |
#31
Hallo!
![]() Das heisst, dass IDE, Compiler und Debugger auf einem fremden System unter möglicherweise anderem Betriebssystem laufen. Lediglich die Anzeige läuft auf dem lokalen Computer.
Da fp in einem Textterminal angezeigt wird, sind die Anforderungen an die Übertragungskapazität vom/zum entfernten Rechner niedrig. ![]() Ich muss die Lazarus Version des Debuggers verwenden, wegen der Portabilitätsprobleme und wegen des
von Embarcadero verschiedenen Debuginfo Formates. Wie umfangreich werden da die Änderungen, um die Übertragung der Botschaften statt mit Windows Messages mit SSH zu machen? ![]() Beachte vor allem den Bereich GDB/MI. Bei Remote-Debugging läuft lediglich ein Teil des Debuggers (gdbserver) und das zu testende Programm auf dem entfernten Rechner. Die Verbindung von gdb (läuft auf dem lokalen Rechner) und gdbserver (läuft auf dem entfernten Rechner) geschieht dabei z.B. mit TCP/IP und passiert gdb intern, darum musst du dich nicht kümmern. Martin Falls die gedbServer und Cvdwarf Quellen nur in c verfügbar sind, ist die Interfacebeschreibung wichtiger. In c kennen ich mich nicht so gut aus, das ich von den Quellen allzu viel profitiere. Habe deshalb das Beispielprojekt "debugtest.lpr" im Verzeichnis "<lw:/Programme/lazarus/debugger/test" Dort erhalte ich die Exception EConverterror, deren Stelle ich im Quelltext noch nicht gefunden habe. Der Fehler liegt nicht im Testprogramm, das vom Debugger untersucht wird, sondern definitiv im Debuggerinterface selber. Ich würd gerne diese Teil als Debugserver verwenden, weil ich da, so das fehlerfrei arbeitet, alle wichtigen Debuginfos bereits erhalte. Im debugtest-Beispielprogramm werden alle Ausgaben in ein Textfenster geschrieben. Unter Windows kann ich dieses Programm so starten, das es beim Start der IDE unsichtbar bleibt, so das ich nur einen Mechanismus implementieren muss, der die Debuginfo zur IDE überträgt. Aber vielleicht ist ja das Interface des gdbServer und Cvdwarf wirklich günstiger. Ich habe in einem zweiten Tab meines Mozilla Browsers die oben genannte GDB Dokumentation geöffnet. In welchem Abschnitt derselben finde ich die relevanten Informationen gdbServer und Cvdwarf. Ich brauche: Name der aktuell untersuchten Quelldatei, Zeilennummer, Name der Funktion/Prozedur/Methode und evtl. die aktuelle Adresse im Binärcode. In der Unit Debugger.pp gibt es den Typ TGDBLocationRec, der diese Information bereit stellt. AUßerdem brauche ich den Verlauf des Aufruf Stack und ggf. die Liste der Haltepunkte. Ne richtige standardiesierte Schnittstelle zum bereits vorhandenen Debugger ist ja allemal besser, als irgendeine zuasammengefrickelte eigene Lösung. Bei der Textmode-IDE habe ich die Units gdbInt.pp und gdbCon.pp gefunden, die aber nicht vollständig implementiert sind, Das wird erst später in einer anderen aif die IDE bezogenen Unit nachgeholt. Lazarus nutzt wiederum ein anders aufgebautes Debuggerinterface. MinGW-Verzeichnis von Lazarus hab ich nur die Binärdateien. Im FPC Verzeicnis gibt es noch debugsvr.pp im Verzeichnis debudSvr oder ähnlich. Die dort befindlichen Units setzen aber die Unit Linux voraus. Damit scheiden die auf der Windows Plattform aus. |
![]() |
Delphi 7 Personal |
#32
![]() Der Name Hinter WINE sagt nicht alles. Aber der wichtige Punkt ist, niemand will eine halb funktionierende IDE
![]() und erst recht will niemand ein Windows Programm unter Linux laufen lassen wenn es nicht notwendig ist. Da sich WINE Anwendungen nicht ins System einpflegen und da die WinAPI nur teilweise funktioniert, ist eine solche Lösung nie optimal.
Das ist natürlich ein schlagendes Argument für Native Anwendungen! Ok! ![]() Also so würde es wohl kein ersatz werden. Auch glaube das die Free Pascal Entwickler keine IDE wollen würden die nicht portabel ist. Denn viele der Lazarus/FPC Entwickler stammen aus dem Linux Lager und dort will man native Anwendungen.
![]() Ich glaube ich Spreche für viele Linux Nutzer wenn ich sage: Ich nutze lieber VIM zum Entwickeln als eine IDE die WINE nutzt. Gerade im Delphi Bereich dürften die Linuxnutzer immer noch ein Trauma von Kylix haben, denn das war genau das was du versuchst und es wurde schlecht akzeptiert.
![]() Zur IDE selbst:
sie startet zumindest unter WINE, aber wirklich toll ist sie nicht. Also selbst der Lazarus Code Editor scheint besser zu sein. Da muss also noch etwas nach gebessert werden.(Tabs funktionieren nicht) ![]() dazu können "X" zum schließen von Tabs nicht schaden.
Bei den SpTBX Komponenten gibt es ein PageControl, das diese "X" auf jedem Tab standardmäßig bereit stellt. Aber der Test auf WINE hat ja mit der bisher von mir verwendeten PageControl Komponente schon mal ergeben, das dann die Tabs nicht funktionieren. Um die Tabs aus dem SpTBX PageControl zu testen müsste ich einen Dummy Applikation bauen, die diese Page Control verwendet. Die müsste dann auf WINE getestet werden. Das dürfte aber dann nicht mehr auf Freepascal zu portieren sein, es sei denn die nueu Freepascal Version kann wirklich Delphi Quelltext ohne Änderung übersetzen, wie das schon behauptet wurde. Allerdings weiß ich nicht, ob diese Komponenten auch für Linux verfügbar sind. ![]() Auch frage ich mich was die Leiste unten soll. Sie nimmt Platz weg und bringt nichts oder?
![]() Für später wären Programmvorlagen vielleicht nicht schlecht.
![]() Ansonsten ein netter Anfang aber wie schon erwähnt nichts für mich. Ich mag es wenn die Anwendungen in meinem System einheitlich sind.
|
![]() |
|
#33
![]() Ich brauche: Name der aktuell untersuchten Quelldatei, Zeilennummer, Name der Funktion/Prozedur/Methode und evtl. die aktuelle Adresse im Binärcode.
Zur Kommunikation mit gdb gibt es mehrere Möglichkeiten. Eine erste IDE (die ich nicht erwähnen darf) benützt die Library libgdb, zwei andere IDE's (die ich ebenfalls nicht erwähnen darf) benutzen pipes zur gdb Applikation. Ersteres ist problematisch, da libgdb nicht mehr zum Lieferumfang der gdb Distribution gehört. ![]() Habe deshalb das Beispielprojekt "debugtest.lpr" im Verzeichnis "<lw:/Programme/lazarus/debugger/test"
Dort erhalte ich die Exception EConverterror, deren Stelle ich im Quelltext noch nicht gefunden habe. Der Fehler liegt nicht im Testprogramm, das vom Debugger untersucht wird, sondern definitiv im Debuggerinterface selber. Ich würd gerne diese Teil als Debugserver verwenden, ... Das ist natürlich auch wieder OT, sorry.
Martin Schreiber
|
![]() |
Delphi 11 Alexandria |
#34
Man darf andere hier schon nennen, aber hier bitte nicht deren Fehler usw diskutieren
Markus Kinzler
|
![]() |
Delphi 7 Personal |
#35
![]() ![]() Ich brauche: Name der aktuell untersuchten Quelldatei, Zeilennummer, Name der Funktion/Prozedur/Methode und evtl. die aktuelle Adresse im Binärcode.
Zur Kommunikation mit gdb gibt es mehrere Möglichkeiten. Eine erste IDE (die ich nicht erwähnen darf) benützt die Library libgdb, zwei andere IDE's (die ich ebenfalls nicht erwähnen darf) benutzen pipes zur gdb Applikation. Ersteres ist problematisch, da libgdb nicht mehr zum Lieferumfang der gdb Distribution gehört. Solch einheitliches Interface hab ich für zukünftige Versionen der IDE eh geplant und zwar so, das ich, während ich jetzt Klassen anspreche, die mir meine Aufgabe erledigen, stattdessen ein geeignetes Interface baue und dann anspreche, wobei die Implentation als Plugin realisiert wird. Mehere .dll mit der Funktionalität. Kommt aber erst später, wenn die Basisfunktionen der IDE alle drin sind. Gibt es dieses einheitliche Debuggerinterface oder ist es da geschickter, 3 verschidene Interfaces zu bauen? Die Erkennung des aktuell auszuwählenden Interfaces könnte über eine Kennung in der .exe erfolgen, ob dwarf, omf oder coff Format. Oder an Hand des Compilernamens. fpc.exe -> dwarf; gcc.exe->dwarf; bcc*.exe->omf; dcc*exe,oxygen.exe->omf vcc.exe->omf. Warum darfst Du die IDEs nicht erwähnen? Das Du mir davon den Quellcode nicht unbedingt zugänglich machen darfst, verstehe ich. Aber die IDE verschweigen? Mit Pipes hab ich experimentiert. Problem ist dort, das ich bei Informationsaustausch nicht weiß, was für ein Ereignis da den Empfang von Daten signalisiert. Sobald ich aber Windows Messages verwende, bin ich Plattformabhängig. Habe dann ein DP Beispiel zu named pipes mit Formularen angeguckt. Da kann ich einen Datensatz senden. Der Emfänger sinalisiert den Emfang der Daten jedoch durch ButtoClick. Ich brauch aber ein Ereignis, das den Datenempfang signalisiert und bei Auftreten des Ereignisses die Daten anzeigt. Gibt es da was in den Tiefen der VCL? Dann bin ich auf WM_CopyData gestoßen, was aber wieder eine Windows Botschaft ist und damit plattformabhängig. Ich könnte mir vorstellen, das die Namenskonvention für Pipes plattformübergreifend gültig ist. Aber das Öffnen der Pipe? Es ließe sich natürlich eine Schnittstelle mit eigenen Aufrufroutinen- oder Methoden bauen. ![]() Habe deshalb das Beispielprojekt "debugtest.lpr" im Verzeichnis "<lw:/Programme/lazarus/debugger/test"
Dort erhalte ich die Exception EConverterror, deren Stelle ich im Quelltext noch nicht gefunden habe. Der Fehler liegt nicht im Testprogramm, das vom Debugger untersucht wird, sondern definitiv im Debuggerinterface selber. Ich würd gerne diese Teil als Debugserver verwenden, ... Das ist natürlich auch wieder OT, sorry.[/quote] So weit wie ich die GPL verstanden habe, dürfte ich nur verpflichtet sein, den Quelltext der GPL Teile weiter zu geben. Das wäre dann das angepasste Programm des Debuggerbeispiels. Für den Rest dürfte die Nennung einer Bezugsquelle ausreichen. Dabei berufe ich mich auf Lazarus 0.9.22, da dort der aktuelle EConverterror nicht aufgetreten ist, den ich in der 0.0.24er Lazarus Version erhalte, sobald ich nach der Initialisierung des Debuggers den ersten Programmschritt ausführe. Quelltext den ich dann auf jeden Fall weitegeben muss, wäre wie gasgt mein verändetes Programm. Konkret betrifft das die Unit DebugtestForm. Werde wohl dann das geänderte Programm samt seinem Quellcode der IDE beilegen. Zum erneuten Übersetzen sind dann halt noch die von mir nicht veränderten Dabuggerunits nötig, die dann nicht Bestandteil meiner IDE werden, sondern im Lazarus Projekt zu finden sind. Werde sehen, welchen Workaround ich für den EConvertError finde. Vielleicht sollte ich mir Lazarus 0.0.22 wieder installieren. Dann müsste ich auf jeden Fall nur das von mir geänderte Beispielprogramm weiter geben. Bei der Suche nach dem EConvertError verlangt der Lazarus Debugger nämlich ständig neue .inc Dateien, die ich dann mühsam suchen muss, um sie ins Projekt einzubinden, damit ich mich zur Fehlerstelle vortasten kann. Eh ich mich da verpflichte diese .inc Dateien mit weiter zu geben, weil da vielleicht Änderungen nötig werden, installier ich mir eheer wieder die vorangegangene Lazarus Version. Mit der gab es den EConvertError nicht. Dann muss ich auch keine geänderten .inc Dateien weiter geben. Andere Quellen, die ich genutzt habe, hab ich ja nicht verändert und sind daher im Lazarus Projekt einzusehen. Ich weiß, das ich, statt die Quelltexte selber weiter zu geben, auch eine Quelle nennen kann, wo die Quelltexte zu erhalten sind. Wenn die IDE nicht Bestandteil von Freepascal wird, werden die von mir nicht veänderten Quellcodes auch nicht zum Übersetzen gebraucht. Das hier habe ich soeben in der Wikipedia zur GPL gefunden: ![]() Alle abgeleiteten Programme eines unter der GPL stehenden Werkes dürfen von Lizenznehmern nur dann verbreitet werden, wenn sie von diesen ebenfalls zu den Bedingungen der GPL lizenziert werden.
Anders wäre es, wenn ich als Quellcodeeditor den aus Lazarus verwenden würde. Dann wäre auch die IDE unter GPL zu stellen. |
![]() |
Delphi 7 Personal |
#36
![]() Ja also ich bin auch der Meinung, dass man jetzt hier nicht auf Aussagen herumhacken sollte, sondern lieber konstruktive Kritik an der IDE anbringen sollte.
Also mir gefällt die IDE sehr gut. Das einzige was mich etwas stört sind die Fremdkomponenten (Toolbar97 etc.) die verwendet werden. So ist es nicht möglich, den Source zu kompiliere ohne die Komponenten zu installieren. ![]() Also an schöni: Mein Lob, weiter so!
|
![]() |
Delphi XE2 Professional |
#37
![]() ![]() Ja also ich bin auch der Meinung, dass man jetzt hier nicht auf Aussagen herumhacken sollte, sondern lieber konstruktive Kritik an der IDE anbringen sollte.
Also mir gefällt die IDE sehr gut. Das einzige was mich etwas stört sind die Fremdkomponenten (Toolbar97 etc.) die verwendet werden. So ist es nicht möglich, den Source zu kompiliere ohne die Komponenten zu installieren. ![]() Also an schöni: Mein Lob, weiter so!
|
![]() |
Delphi 7 Personal |
#38
![]() ![]() ![]() Ja also ich bin auch der Meinung, dass man jetzt hier nicht auf Aussagen herumhacken sollte, sondern lieber konstruktive Kritik an der IDE anbringen sollte.
Also mir gefällt die IDE sehr gut. Das einzige was mich etwas stört sind die Fremdkomponenten (Toolbar97 etc.) die verwendet werden. So ist es nicht möglich, den Source zu kompiliere ohne die Komponenten zu installieren. ![]() Also an schöni: Mein Lob, weiter so!
Ist allerdings noch ein Stück Arbeit. Will erst mal Debugger + Codevervollständigung abschließen. ![]() Das heisst, dass IDE, Compiler und Debugger auf einem fremden System unter möglicherweise anderem Betriebssystem laufen. Lediglich die Anzeige läuft auf dem lokalen Computer.
Da fp in einem Textterminal angezeigt wird, sind die Anforderungen an die Übertragungskapazität vom/zum entfernten Rechner niedrig. ![]() Werd aber erst mal mein bisheriges Konzept weiter verfolgen. Erweiterungen folgen später. Hmmm, werd mir mal die Compilerfarm auf Sourceforge angucken. Hab mich bisher immer davor gedrückt. ![]() Kleiner Nachtrag: Werde mir bezüglich Debugger ne ganz andere Lösung einfallen lassen müssen. Lazarus spinnt mit der Fehlermeldung "MyDBGprg.lpr(15,1) Error:Can't create object file: MyDBGprg.exe" ALs Folgefehler kommt natürlich die Meldung, das die .exe nicht erzeugt werden kann. Keine Ahnung, was da wieder schief läuft. Aber ich bleibe dran. Allerdings wird der Debugger unter diesen Umständen auf jeden Fall Closed Source. Anderenfalls brauch ich wirksame Hilfe. FR. 12.02.2010: Hab aber heute Morgen eine Lösung mit Schnittstelle gefunden. Die ist aber eh nich plattformunabhängig. Der gdbServer sieht allerdings viel versprechend aus. Mal schauen.. |
![]() |
Florian Hämmerle
|
#39
Hi
Ich wollte mal fragen wie weit die Entwicklung schon vorangeschritten ist? mfg Florian |
![]() |
Delphi 7 Personal |
#40
![]() Hi
Ich wollte mal fragen wie weit die Entwicklung schon vorangeschritten ist? mfg Florian Die neue Optik, (nur geringfügig verändert), kann hier schon mal bewundert werden. Will sie nicht an den Threadanfang stellen, da die Änderungen marginal sind. Nur die Werkzeugleiste bissl erweitert. Das sind jetzt auch nur 2 Screenshots, weil der Debugger noch nicht enthalten ist. Die Schnittstelle arbeitet noch nicht korrekt. Deshalb gebe ich die neue Version auch noch nicht raus. |
![]() |
Ansicht |
![]() |
![]() |
![]() |
ForumregelnEs 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
|
|
Nützliche Links |
Heutige Beiträge |
Sitemap |
Suchen |
Code-Library |
Wer ist online |
Alle Foren als gelesen markieren |
Gehe zu... |
LinkBack |
![]() |
![]() |