Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Advanced Developers Conference     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: MFC (Visual C++) ::  ExitInstance() liefert nicht den gewünschten wert zurück  
Gehen Sie zu Seite Zurück  1, 2
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
Martin Richter
Moderator

Benutzerprofil
Anmeldungsdatum: 18.04.2006
Beiträge: 13143
Beitrag Martin Richter Moderator 17:31:43 02.09.2010   Titel:              Zitieren

Kann es sein, dass die andere DLL Deinen Prozess vorher mit ExitProcess beendet, bevor dein exit zuschlägt?

Setz mal einen Breakponint drauf.

_________________
Martin Richter (MVP für C++) WWJD http://blog.m-ri.de
"A well-written program is its own heaven; a poorly written program is its own hell!" The Tao of Programming
chermanns
Mitglied

Benutzerprofil
Anmeldungsdatum: 05.12.2005
Beiträge: 12
Beitrag chermanns Mitglied 07:44:25 03.09.2010   Titel:              Zitieren

Beim Debugen sieht ja alles gut aus. ExitInstance() wird durchlaufen, danach sehe ich das noch einige Destruktoren von Singeltons durchlaufen werden.
bei einem BreckDann Raus aus der WinMain() sehe ich in der den mainret = meinen Exitcode (5).

Code:
           /*
             * Note that if the exe is managed app, we don't really need to
             * call exit or _c_exit. .cctor should be able to take care of
             * this.
             */
            if ( !managedapp )
                exit(mainret);
Code:
/*
* Note that if the exe is managed app, we don't really need to
* call exit or _c_exit. .cctor should be able to take care of
* this.
*/
if ( !managedapp )
exit(mainret);
Code:
           /*
             * Note that if the exe is managed app, we don't really need to
             * call exit or _c_exit. .cctor should be able to take care of
             * this.
             */
            if ( !managedapp )
                exit(mainret);


danach halt die Ausgabe

Code:
The thread 'Win32 Thread' (0xd34) has exited with code 5 (0x5).
The thread 'Win32 Thread' (0x9f4) has exited with code 5 (0x5).
The thread 'Win32 Thread' (0x734) has exited with code 5 (0x5).
The program '[2356] App.exe: Native' has exited with code 0 (0x0).
Code:
The thread 'Win32 Thread' (0xd34) has exited with code 5 (0x5).
The thread 'Win32 Thread' (0x9f4) has exited with code 5 (0x5).
The thread 'Win32 Thread' (0x734) has exited with code 5 (0x5).
The program '[2356] App.exe: Native' has exited with code 0 (0x0).
Code:
The thread 'Win32 Thread' (0xd34) has exited with code 5 (0x5).
The thread 'Win32 Thread' (0x9f4) has exited with code 5 (0x5).
The thread 'Win32 Thread' (0x734) has exited with code 5 (0x5).
The program '[2356] App.exe: Native' has exited with code 0 (0x0).



Meitest du das oder habe ich dich falsch verstanden?
Die veursachende DLL wird dynamisch von einer andern DLL geladen, die auch zugeliefert wird (zumindest zeigt mir der depedency walker das so an).

Mir ist nicht klar was passiert, ob in der verursachenden DLL ein exit(0) aufgerufen wird oder ein ExitInstanze().

Kann ich (ausser den entsprechenden Entwickler zu benachrichtigen) etwas tun um das fehlerhafte Verhalten zu beseitigen (mir ist nichts bekannt, dass heisst aber nichts :-) )?


Grüsse Carsten
Martin Richter
Moderator

Benutzerprofil
Anmeldungsdatum: 18.04.2006
Beiträge: 13143
Beitrag Martin Richter Moderator 09:13:20 03.09.2010   Titel:              Zitieren

Du kannst doch auch einen Breakpoint auf Funktionen im OS setzen. Hier wäre ExitProcess oder ExitThread der Ansatz...

Evtl. kommt die DLL beim Uninit mir irgendwas nicht klar und terminiert seinerseits den Prozess...

Bist Du denn soweit vorgedrungen beim Debuggen in exit, dass Du wirklich sehen kannst das ExitProcess aufgerufen wird?

_________________
Martin Richter (MVP für C++) WWJD http://blog.m-ri.de
"A well-written program is its own heaven; a poorly written program is its own hell!" The Tao of Programming
chermanns
Mitglied

Benutzerprofil
Anmeldungsdatum: 05.12.2005
Beiträge: 12
Beitrag chermanns Mitglied 12:11:58 06.09.2010   Titel:              Zitieren

Hallo Martin,

ich habe mit dem Entwickler gesprochen, der die "problematische" DLL läde.
Er sagte mir, dass er schon Probleme hatte und er früher innerhalb seiner DLL die problematisch DLL lädt und entlädt, dies (entladen ) nun aber nicht mehr macht (sich aber nun darum kümmert das es klappt).

Mein Statmente ist:
Ich bin zur Zusammenarbeit bereit bin aber nicht für alles verantwortlich was n Zulieferer bereitstellen, zumal der Integrationstest nicht bei uns stattfindet.

Ich bin dankbar für dieses Forum, die Hilfe die es beinhaltet und die offenen Ohren für die Probleme.

Grüsse Carsten
C/C++ Forum :: MFC (Visual C++) ::  ExitInstance() liefert nicht den gewünschten wert zurück  
Gehen Sie zu Seite Zurück  1, 2
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.