INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Debugging externer DLL



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

10.05.2008, 11:19
Beitrag #1

Tom_UniMainz Offline
LVF-Neueinsteiger


Beiträge: 2
Registriert seit: May 2008

8.00
2007
de

55128
Deutschland
Debugging externer DLL
Hallo zusammen !
Ich bin in der LabVIEW-Welt relativ neu und habe einige Schwierigkeiten. Wir steuern mit LabVIEW eine selbstentwickelte Hardware und die Schnittstelle stellt eine ebenfalls selbstentwickelte DLL dar. Im Zusammenhang mit dieser DLL haben sich zwei Probleme ergeben:

1) Ich müsste während der Laufzeit die DLL schrittweise debuggen nachdem sie von LabVIEW geladen und aufgerufen wurde. Ist das möglich und falls ja wie ?

2) Nach dem Beenden des VI scheint die externe und geladene DLL irgendwie noch "aktiv" zu sein. Ein Neuladen der DLL funktioniert nur, nachdem man LabVIEW komplett geschlossen und wieder neu geöffnet hat. Wo liegt das Problem ?

Vielen Dank !
Thomas...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.05.2008, 10:30 (Dieser Beitrag wurde zuletzt bearbeitet: 22.07.2009 07:28 von rolfk.)
Beitrag #2

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
Debugging externer DLL
' schrieb:Hallo zusammen !
Ich bin in der LabVIEW-Welt relativ neu und habe einige Schwierigkeiten. Wir steuern mit LabVIEW eine selbstentwickelte Hardware und die Schnittstelle stellt eine ebenfalls selbstentwickelte DLL dar. Im Zusammenhang mit dieser DLL haben sich zwei Probleme ergeben:

1) Ich müsste während der Laufzeit die DLL schrittweise debuggen nachdem sie von LabVIEW geladen und aufgerufen wurde. Ist das möglich und falls ja wie ?

2) Nach dem Beenden des VI scheint die externe und geladene DLL irgendwie noch "aktiv" zu sein. Ein Neuladen der DLL funktioniert nur, nachdem man LabVIEW komplett geschlossen und wieder neu geöffnet hat. Wo liegt das Problem ?

1) Wenn Du eine aktuelle LabVIEW Version hast kannst Du extFuncCatching=False in Dein LabVIEW.ini File setzen und das sollte den LabVIEW Exception Dialog vermeiden und anstelle davon die Möglichkeit bieten um den registrierten SystemDebugger aufzurufen bei einer Exception. Ausser Fehlerexceptions kannst Du dann auch zum Beispiel einen {__asm int 3} User breakpoint in Deinem Code haben.

Alternativ in der Visual C IDE LabVIEW.exe als externes Executable zum Debuggen Deiner DLL angeben. Breakpoint in IDE setzen wo Du willst und dann Execute auswählen.

2) Solange das VI im Speicher ist hat es auch eine Referenz zur DLL offen. In LabVIEW 8.2 und neuer kannst Du aber den Path zur DLL als Parameter der Call Library Node angeben. Bei Übergabe eines leeren Paths wird die zuletzt geladenen DLL aus dem Speicher entfernt. Damit hast Du direkte Kontrolle über wann die DLL geladen und ausgeladen wird.

Rolf Kalbermatter

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
08.07.2008, 14:59 (Dieser Beitrag wurde zuletzt bearbeitet: 08.07.2008 15:04 von abrissbirne.)
Beitrag #3

abrissbirne Offline
LVF-Stammgast
***


Beiträge: 480
Registriert seit: Aug 2007

LV2009, LV2010
2007
EN

66123
Deutschland
Debugging externer DLL
' schrieb:Alternativ in der Visual C IDE LabVIEW.exe als externes Executable zum Debuggen Deiner DLL angeben. Breakpoint in IDE setzen wo Du willst und dann Execute auswählen.

Rolf Kalbermatter
Das ganze sieht dann so aus:

Edit:
Du solltest unter Configuration: -> All configurations und unter Platform: Win32 wählen. Da war ich mal wieder zu schnell.


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.07.2009, 16:58
Beitrag #4

martinv Offline
LVF-Neueinsteiger


Beiträge: 2
Registriert seit: Jun 2009

8.6
-
de

35037
Deutschland
Debugging externer DLL
' schrieb:2) Solange das VI im Speicer ist hat es auch eine Referenz zur DLL offen. In LabVIEW 8.2 und neuer kannst Du aber den Path zur DLL als Parameter der Call Library Node angeben. Bei übergabe eines leeren Paths wird die zuletzt geladenen DLL aus dem Speicher entfernt. Damit hast Du direkte Kontrolle über wann die DLL geladen und ausgeladen wird.

Ich habe nicht ganz verstanden, wie das funktioniert. Ich habe eine Call Library Node eingebaut, die aufgefufen wird, wenn die .dll nicht mehr richtig funktioniert (dies geschieht bei meinem Programm ab und zu) Die Funktion enthaelt nur einen Rueckgabewert. Als Pfad habe ich eine Pfadkonstante angegeben, die keine Buchstaben enthaelt. Dennoch verschwindet das Problem dadurch nicht, weshalb ich glaube, dass ich da noch immer etwas falsch mache. Was habe ich das falsch verstanden?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.07.2009, 07:31
Beitrag #5

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
Debugging externer DLL
Tritt das Problem auch auf wenn Du alle VIs sauber abgeschlossen und aus dem Speicher entfernt hast? Dann macht Deine DLL selber wohl etwas Unorthodoxes das sie auf diese Weise im Speicher behält. Ein LoadLibrary Call auf sich selber wäre beispielsweise schon genug.

Rolf Kalbermatter

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Aufruf externer Bibliotheken / Keyence / Schnittstelle _Markus_ 1 6.323 20.05.2019 12:23
Letzter Beitrag: _Markus_
  LabView Wrapper - PostUserEvent aus externer DLL Stephan235 3 10.425 22.07.2015 13:28
Letzter Beitrag: rolfk
  Einbinden externer DLL St_Markus 1 6.896 28.05.2013 15:25
Letzter Beitrag: rolfk
  VI als externer Code finalr 1 5.023 23.11.2012 08:58
Letzter Beitrag: GerdW
  Array Elemnte von externer Funktion verbinden Heili 3 5.352 12.11.2010 13:54
Letzter Beitrag: Lucki
  VI mit externer DLL macht kein Multithreading wernerIBN 14 14.119 09.12.2009 17:36
Letzter Beitrag: wernerIBN

Gehe zu: