[gelöst] Debuggen mit Breakpoint dupliziert Reiter

Für Fragen rund um die Ide und zum Debugger
Antworten
Eb
Lazarusforum e. V.
Beiträge: 240
Registriert: Di 5. Feb 2008, 15:32
OS, Lazarus, FPC: Linux Mint - Laz 2.2.0
CPU-Target: 64Bit
Wohnort: Stuttgart

[gelöst] Debuggen mit Breakpoint dupliziert Reiter

Beitrag von Eb »

Hallo Zusammen,

Ich habe mir Kubuntu 14.04 und Lazarus 1.2.2 installiert.
Ich erstelle ein ganz neues Projekt: eine Form mit einem Button.
Ins Button-Klick-Event schreibe ich paar Zeilen Code und setze einen Breakpoint da drauf.
Im Quelltexteditor gibt es dann zu diesem Zeitpunkt einen Reiter 'Unit1'.

Beim Ausführen und Klick auf den Button wird im Quelltexteditor ein zweiter Reiter erzeugt mit dem Titel 'Unit1(2)'.
Die Unit1 ist also zweimal geladen. In diesen zweiten Reiter springt der Cursor und markiert die Zeile in welcher
der Breakpoint gesetzt wurde. Hier kann man mit F8 auch weiter springen.
Der rote Punkt (das Symbol des Breakpoints) steht aber unter dem ersten Reiter.

Hab noch ein OpenSuse 11.3 mit KDE und Laz 1.0 RC2 gefunden. Bei dem ist das Verhalten genauso.

Ich habe seither allerdings unter Ubuntu 14.04 mit Unity, Lazarus 1.2.2 entwickelt. Hier wird kein zweiter Reiter erzeugt.

Für mich ist das erneute Laden der Unit in einen zweiten Reiter ein unerwünschtes Verhalten.

Weiss jemand, wo man das abstellen kann?

Gruß
Eb
Zuletzt geändert von Eb am Fr 12. Sep 2014, 10:53, insgesamt 1-mal geändert.

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Debuggen mit Breakpoint dupliziert Reiter im Quelltexted

Beitrag von Michl »

Hallo Eb,

ich kann Dir zwar keinen Tipp geben (unter Windows ist das Verhalten weder unter 1.2.4 noch 1.3 so), doch würde ich gleich die Gelegenheit nutzen und ein identisches Verhalten für die Verwendung von Cody melden (ich hatte bisher immer einfach die 2. Unit wieder geschlossen und alles war gut und zu faul einen Bugeintrag zu suchen/zu machen).

Suche ich einen unbekannten Bezeichner mittels Cody öffnet sich die Unit, in dem der unbekannte Bezeichner war, ein zweites Mal.

Kann das jemand bestätigen oder hat dafür eine Lösung?!

Mein System Win7 64bit, Lazarus 32bit 1.3 r46148M FPC 2.7.1 i386-win32-win32/win64

Michl

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Achtzig
Beiträge: 90
Registriert: Mo 15. Okt 2007, 13:09
OS, Lazarus, FPC: Debian
CPU-Target: xxBit

Re: Debuggen mit Breakpoint dupliziert Reiter im Quelltexted

Beitrag von Achtzig »

Bei mir trat dieses Verhalten immer dann auf, wenn ich eine Unit über zwei verschiedene Pfade öffnete. Ein direkter Pfad und ein Pfad, der eine symbolische Verknüpfung enthält. Schau doch mal in die Statusleiste, ob die Pfade der beiden Einheiten unterschiedlich sind. Wenn ja, öffne die Unit über den Pfad, den auch Lazarus verwendet.

Eb
Lazarusforum e. V.
Beiträge: 240
Registriert: Di 5. Feb 2008, 15:32
OS, Lazarus, FPC: Linux Mint - Laz 2.2.0
CPU-Target: 64Bit
Wohnort: Stuttgart

Re: Debuggen mit Breakpoint dupliziert Reiter im Quelltexted

Beitrag von Eb »

Bingo! Das ist die Ursache.

Unter meinem home-verzeichnis habe ich einen Softlink auf die Daten-Partition angelegt.
Über diesen Link öffne ich die Lazarus Projekte.

Das zweite Öffnen der Unit macht die IDE dann allerdings über den direkten Pfad (ohne Link).

Wenn ich das Projekt über den direkten Pfad öffne, wird beim Debuggen kein zusätzlicher Reiter mehr aufgemacht.
Problem gelöst.

Vielen Dank,
Eb

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: [gelöst] Debuggen mit Breakpoint dupliziert Reiter

Beitrag von Michl »

Ich schließe mich dem Dank für die Info an.

Das Problem tritt nur auf, wenn ich ein neues Projekt (um etwas zu testen) erstelle. Speichere ich das Projekt in einem eigenen Ordner (nutze also nicht das temporäre Verzeichnis), bevor ich es zu compilieren versuche, ist alles gut.

Tatsächlich werden die Units als zwei unterschiedliche betrachtet, obwohl sie physisch identisch sind:
Unit1 -> "unit1.pas"
Unit1(2) -> "C:\Users\...\AppData\Local\Temp\unit1.pas"

Ich habs mal als Bug gemeldet: http://bugs.freepascal.org/view.php?id=26712

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Antworten