Forum: PC-Programmierung Altes C++ VS Programm mit Eclipse Debuggen


von Dingens (Gast)


Lesenswert?

Hallo Leute. Ich wollte meine Programmierfähigkeiten wieder auffrischen 
(Jahre lang nicht gemeldet). Damals hab ich in der Uni noch mit Visual 
Studio programmiert. Das war c++11... Nun hab ich mich für Eclipse mit 
GCC zum proggen entschieden... Ich hab allerdings Probleme mit dem 
Debuggen. Das Launching funktioniert bei dem alten Projekt nicht. Hallo 
World läuft wunderbar. Also der Compiler sitzt drin!

Wenn ich starten will dann passiert nichts. Also Ein Configuration -> 
c/c++ Application -> ja und dann kann ich bei 'Project' schon nichts 
"Briesen" denn das ist komplett leer!

Vielen Dank!

von nicht"Gast" (Gast)


Lesenswert?

Du kannst ein neues Projekt aufmachen und die Dateien per Drag&Drop ins 
leere Projekt einziehen.

Auf der anderen Seite gibts VisualStudio als Community Version 
kostenlos, gibt also keinen Grund zu wechseln.

von Dingens (Gast)


Lesenswert?

nicht"Gast" schrieb:
> Du kannst ein neues Projekt aufmachen und die Dateien per
> Drag&Drop ins
> leere Projekt einziehen.
>
> Auf der anderen Seite gibts VisualStudio als Community Version
> kostenlos, gibt also keinen Grund zu wechseln.

Ja, richtig. Ich möchte allerdings nicht unbedingt Microsoftabhängig 
sein. Noch benutze ich zwar Windows, gedenke aber auf Linux umzusteigen.

von Oliver S. (oliverso)


Lesenswert?

Dann nimm gcc/Eclipse für neue Projekte, und debugge dein altes Projekt 
in Visual Studio.

Wenn das erweitert werden soll, ist jetzt der Zeitpunkt gekommen, das 
alte Projekt auf die gcc-toolchain umzuschreiben. Nutzt das allerdings 
Micorsoft-spzifischen Kleinkram wie MFC o.ä.,solltes du das mit Eclipse 
nochmal überdenken.

Oliver

von Dingens (Gast)


Lesenswert?

Error in final launch sequence:

Failed to execute MI command:
-file-exec-and-symbols "D:/Studium/Informatik 
I/Exception-Handling/Exception-Handling/Exc-Main.cpp"
Error message from debugger back end:
"D:/Studium/Informatik 
I/Exception-Handling/Exception-Handling/Exc-Main.cpp": not in executable 
format: file format not recognized

Hallo nochmal. Ich bekomme jetzt diesen Fehlercode...
Weiß jemand Rat?

von Dingens (Gast)


Lesenswert?

Oliver S. schrieb:
> Dann nimm gcc/Eclipse für neue Projekte, und debugge dein altes
> Projekt
> in Visual Studio.
>
> Wenn das erweitert werden soll, ist jetzt der Zeitpunkt gekommen, das
> alte Projekt auf die gcc-toolchain umzuschreiben. Nutzt das allerdings
> Micorsoft-spzifischen Kleinkram wie MFC o.ä.,solltes du das mit Eclipse
> nochmal überdenken.
>
> Oliver

Nein. Es ist eine einfache Konsolenanwendung.

von Johannes S. (Gast)


Lesenswert?

Dingens schrieb:
> Error message from debugger back end:
> "D:/Studium/Informatik
> I/Exception-Handling/Exception-Handling/Exc-Main.cpp": not in executable
> format: file format not recognized

mit einem Quelltext kann der Debugger nix anfangen, in der Launch Config 
muss schon das executable eingetragen werden.

von Oliver S. (oliverso)


Lesenswert?

Eclipse erstellt die launch configuration doch automatisch.

Im Projektexplorer den debug-Ordner öffnen, auf das exe da drin 
rechtsklicken, und "debug as ..." auswählen.

Funktioniert das nicht, gibt es ein Problem mit der 
toolchain-Installation.

Oliver

: Bearbeitet durch User
von Dingens (Gast)


Lesenswert?

Oliver S. schrieb:
> Eclipse erstellt die launch configuration doch automatisch.
>
> Im Projektexplorer den debug-Ordner öffnen, auf das exe da drin
> rechtsklicken, und "debug as ..." auswählen.
>
> Funktioniert das nicht, gibt es ein Problem mit der
> toolchain-Installation.
>
> Oliver
Neu erstellte Beispielprogramme wie "Hello World" funktionieren super. 
Wenn ich das Alte Projekt importiere wie hier erklärt:
https://rsarte.hcldoc.com/help/index.jsp?topic=%2Forg.eclipse.cdt.doc.user%2Fgetting_started%2Fcdt_w_debug.htm

Dann wird bei mir (im Gegensatz zur Anleitung) allerdings keine .exe 
oder makefile erstellt. Keine Ahnung...

von Oliver S. (oliverso)


Lesenswert?

Was genau verstehst du unter „Projekt importieren“ ?

Beschriebe mal, wie du das gemacht hast.

Oliver

von Dingens (Gast)


Lesenswert?

Das Projekt hab ich über

Oliver S. schrieb:
> Was genau verstehst du unter „Projekt importieren“ ?
>
> Beschriebe mal, wie du das gemacht hast.
>
> Oliver

Ich hab's jetzt so gemacht, dass ich ein hallo world Project gestartet 
habe und die .cpp Datei durch meine cpp + headder ersetzt habe.

Das funktioniert. Nur unterstützt Eclipse GCC leider nicht die 
Funktionen strlen und strcpy. (Ja string und cstring hab ich inkludiert. 
Hat nichts genützt)

Außerdem funktioniert sprintf_s nicht... Aber ich kann jetzt debuggen.
Um oben genanntes zu lösen hatte ich noch keine Zeit.

Leider bin ich nicht Zuhause und kann keinen code Posten.

von Mark B. (markbrandis)


Lesenswert?

Dingens schrieb:
> Nur unterstützt Eclipse GCC leider nicht die Funktionen strlen und strcpy.
> (Ja string und cstring hab ich inkludiert. Hat nichts genützt)

Selbstverständlich verfügt der GCC, oder besser gesagt: die 
C-Standardbibliothek über diese Funktionen.

Was ist denn die Fehlermeldung?

von void (Gast)


Lesenswert?

Dingens schrieb:
> Ja, richtig. Ich möchte allerdings nicht unbedingt Microsoftabhängig
> sein. Noch benutze ich zwar Windows, gedenke aber auf Linux umzusteigen.

Nur um das klarzustellen. Das Argument Microsoftabhängigkeit stimmt.
Der Punkt VS Studio Code läuft nicht unter Linux dagegen nicht.
https://code.visualstudio.com/docs/setup/linux

von Dingens (Gast)


Angehängte Dateien:

Lesenswert?

Mark B. schrieb:
> Dingens schrieb:
>> Nur unterstützt Eclipse GCC leider nicht die Funktionen strlen und strcpy.
>> (Ja string und cstring hab ich inkludiert. Hat nichts genützt)
>
> Selbstverständlich verfügt der GCC, oder besser gesagt: die
> C-Standardbibliothek über diese Funktionen.
>
> Was ist denn die Fehlermeldung?

Siehe Bild.

von mh (Gast)


Lesenswert?

Dingens schrieb:
> Mark B. schrieb:
>> Dingens schrieb:
>>> Nur unterstützt Eclipse GCC leider nicht die Funktionen strlen und strcpy.
>>> (Ja string und cstring hab ich inkludiert. Hat nichts genützt)
>>
>> Selbstverständlich verfügt der GCC, oder besser gesagt: die
>> C-Standardbibliothek über diese Funktionen.
>>
>> Was ist denn die Fehlermeldung?
>
> Siehe Bild.

Hast du die Fehlermeldung gelesen?

von Dingens (Gast)


Lesenswert?

mh schrieb:
> Dingens schrieb:
>> Mark B. schrieb:
>>> Dingens schrieb:
>>>> Nur unterstützt Eclipse GCC leider nicht die Funktionen strlen und strcpy.
>>>> (Ja string und cstring hab ich inkludiert. Hat nichts genützt)
>>>
>>> Selbstverständlich verfügt der GCC, oder besser gesagt: die
>>> C-Standardbibliothek über diese Funktionen.
>>>
>>> Was ist denn die Fehlermeldung?
>>
>> Siehe Bild.
>
> Hast du die Fehlermeldung gelesen?

Uff. Danke für die riesen große Hilfe! Nein, Natürlich nicht.

Du kannst dir ja gerne die Doku zur Funktion durchlesen und mich dann 
nochmal fragen.

von mh (Gast)


Lesenswert?

Dingens schrieb:
> mh schrieb:
>> Hast du die Fehlermeldung gelesen?
>
> Uff. Danke für die riesen große Hilfe! Nein, Natürlich nicht.
Gern geschehen! Du solltes das allerdings dringend nachholen.

> Du kannst dir ja gerne die Doku zur Funktion durchlesen und mich dann
> nochmal fragen.
Ich sehe nicht so ganz den Sinn. Aber wenn du unbedingt willst. Hast du 
die Fehlermeldung gelesen?

von Dingens (Gast)


Lesenswert?

Dingens schrieb:
> Mark B. schrieb:
>> Dingens schrieb:
>>> Nur unterstützt Eclipse GCC leider nicht die Funktionen strlen und strcpy.
>>> (Ja string und cstring hab ich inkludiert. Hat nichts genützt)
>>
>> Selbstverständlich verfügt der GCC, oder besser gesagt: die
>> C-Standardbibliothek über diese Funktionen.
>>
>> Was ist denn die Fehlermeldung?
>
> Siehe Bild.

Das Programm Funktioniert jetzt... Die Lösung: Löschen der 
Fehlermeldung... WTF, also das es tatsächlich ein so sonderbares 
IDE-Problem ist, hätte ich niemals gedacht... ich bin schockiert und 
weiß gar nicht ob ich bei Eclipse bleiben soll.

von mh (Gast)


Lesenswert?

Dingens schrieb:
> Das Programm Funktioniert jetzt... Die Lösung: Löschen der
> Fehlermeldung... WTF

Ich hoffe, du hast das fehlende Argument ergänzt.

von Dingens (Gast)


Lesenswert?

mh schrieb:
> Dingens schrieb:
> Das Programm Funktioniert jetzt... Die Lösung: Löschen der
> Fehlermeldung... WTF
>
> Ich hoffe, du hast das fehlende Argument ergänzt.

Ich empfehle dir die Doku. Da fehlt kein Argument.

von mh (Gast)


Lesenswert?

Dingens schrieb:
> Ich empfehle dir die Doku. Da fehlt kein Argument.

Ernsthaft? Ich bin mir relativ sicher, dass ich bis 3 zählen kann und 
dein Compiler stimmt mir zu.

von Dingens (Gast)


Lesenswert?

mh schrieb:
> Dingens schrieb:
> Ich empfehle dir die Doku. Da fehlt kein Argument.
>
> Ernsthaft? Ich bin mir relativ sicher, dass ich bis 3 zählen kann und
> dein Compiler stimmt mir zu.

Nur braucht die Funktion nicht zwangsläufig drei Argumente, deshalb 
sollte man in die Doku gucken. Aber hey du bist sicher zu schlau dafür, 
denn du kannst bis 3. zählen.

von Marc (Gast)


Lesenswert?

Dingens schrieb:
> Nur braucht die Funktion nicht zwangsläufig drei Argumente,

Meines Wissens ist das im Standard nicht so.
Hat da gcc eine Spezialversion?

von mh (Gast)


Lesenswert?

Marc schrieb:
> Dingens schrieb:
>> Nur braucht die Funktion nicht zwangsläufig drei Argumente,
>
> Meines Wissens ist das im Standard nicht so.
> Hat da gcc eine Spezialversion?

Der Standard ist da ziemlich eindeutig (siehe 
http://eel.is/c++draft/cstring.syn). Und gcc hält sich ziemlich sicher 
dran.

von Dingens (Gast)


Lesenswert?

mh schrieb:
> Marc schrieb:
> Dingens schrieb:
> Nur braucht die Funktion nicht zwangsläufig drei Argumente,
>
> Meines Wissens ist das im Standard nicht so.
> Hat da gcc eine Spezialversion?
>
> Der Standard ist da ziemlich eindeutig (siehe
> http://eel.is/c++draft/cstring.syn). Und gcc hält sich ziemlich sicher
> dran.

Und nun?

von Marc (Gast)


Lesenswert?

@Dingens
Das ist interresant, welche gcc Version und welche Settings nutzt du?
Ich versuche es gerade nachzuvollziehen.

von mh (Gast)


Lesenswert?

Dingens schrieb:
> Und nun?

Gute Frage! Hast du etwas dazu gelernt?

von Dingens (Gast)


Lesenswert?

mh schrieb:
> Dingens schrieb:
> Und nun?
>
> Gute Frage! Hast du etwas dazu gelernt?

Immer. Und du?

von Marc (Gast)


Lesenswert?

Oh Mann, Jungs habt ihr's jetzt bald?

Nochmal meine Frage:
Mein gcc meckert, wenn ich keine 3 Parameter nutze.
Kann sein dass Du eine überladene strncpy() nutzt?

Ich finde bei gcc keine Version, in der der dritte
Parameter von strncpy optional ist.

von Dingens (Gast)


Lesenswert?

Marc schrieb:
> Oh Mann, Jungs habt ihr's jetzt bald?
>
> Nochmal meine Frage: Mein gcc meckert, wenn ich keine 3 Parameter nutze.
> Kann sein dass Du eine überladene strncpy() nutzt?
>
> Ich finde bei gcc keine Version, in der der dritte Parameter von strncpy
> optional ist.

Hallo. Nein. Ich nutze strcpy ohne n!
Aber das war nicht das Problem. Ich hatte genauso Fehlermeldungen bis 
ich diese mittels Rechtsklick -> deleted gelöscht habe!

Ich wollte den mh nur etwas ärgern, weil er so arrogant ist und die 
Frage nicht richtig gelesen hat. Anfangs hatte ich erwähnt, dass ich 
strcpy ohne n! Nutze. Es war etwas schlampig von mir den Screenshot mit 
strncpy zu verwenden. Der Fehler war aber identisch.

:)

von mh (Gast)


Lesenswert?

Dingens schrieb:
> mh schrieb:
>> Dingens schrieb:
>> Und nun?
>>
>> Gute Frage! Hast du etwas dazu gelernt?
>
> Immer. Und du?

Nicht über C++. Mir ist die Funktion strncpy schon seit ANSI C bekannt.

Marc schrieb:
> Oh Mann, Jungs habt ihr's jetzt bald?
>
> Nochmal meine Frage:
> Mein gcc meckert, wenn ich keine 3 Parameter nutze.
> Kann sein dass Du eine überladene strncpy() nutzt?
Das würde undefined behavior auslösen.

> Ich finde bei gcc keine Version, in der der dritte
> Parameter von strncpy optional ist.
Warum sollte gcc das tun? Dafür gibts strcpy?!

von Marc (Gast)


Lesenswert?

Also Sorry, aber dieses Gehabe war absolut unnötig.

Du schreibst nur dass strcpy nicht geht und im Screenshot nutzt du 
strncpy. Und dazu die Fehlermeldung.
Du schreibst nicht, dass du DANACH wieder strcpy nutzt.

Dieses Gegockeln hat micht jetzt ne Stunde gekostet und ich wollte nur 
helfen/verstehen. Das was Ihr hier tut hat das Forum nicht verdient!

von Dingens (Gast)


Lesenswert?

Marc schrieb:
> Also Sorry, aber dieses Gehabe war absolut unnötig.
>
> Du schreibst nur dass strcpy nicht geht und im Screenshot nutzt du
> strncpy. Und dazu die Fehlermeldung.
> Du schreibst nicht, dass du DANACH wieder strcpy nutzt.
>
> Dieses Gegockeln hat micht jetzt ne Stunde gekostet und ich wollte nur
> helfen/verstehen. Das was Ihr hier tut hat das Forum nicht verdient!

Dafür entschuldige ich mich bei dir.

von Dingens (Gast)


Lesenswert?

Aber da ihr ja versiert seid. Ist das mit dem Löschen des Fehlers 
bekannt? Ich nutze die aktuelle Version.

von Marc (Gast)


Lesenswert?

Bin inzwischen umgestiegen auf VS Code.
Hatte an anderer Stelle häufig Eclipse Probleme.

von Marc (Gast)


Lesenswert?

mh schrieb:
>> Kann sein dass Du eine überladene strncpy() nutzt?
> Das würde undefined behavior auslösen.

Nein, probiers aus, es geht:
// Selten dämlicher Code, aber unter C++ geht's
char *strncpy(char *dest, const char *src) {
    return strncpy(dest,src,100);
}
Compiliert mit gcc in C++11, wie oben beschrieben.

>> Ich finde bei gcc keine Version, in der der dritte
>> Parameter von strncpy optional ist.
> Warum sollte gcc das tun? Dafür gibts strcpy?

Nicht's für ungut, aber deine Art rhetorische Fragen zu stellen, helfen 
nicht immer.
Besondern wenn der gleiche Charakter antwortet...

BTW: GCC tut einige Dinge die nicht mit dem Standard konform sind (wenn 
man es will).

Schönen Abend.

von mh (Gast)


Lesenswert?

Marc schrieb:
> Dieses Gegockeln hat micht jetzt ne Stunde gekostet und ich wollte nur
> helfen/verstehen. Das was Ihr hier tut hat das Forum nicht verdient!

Es tut mir Leid, dass du Zeit damit verschwendet hast. Allerdings bin 
ich nicht sicher, warum ich mit daran Schuld sein soll. Ich hab dir 
schon um 21:36 geantwortet, dass der Standard nur die 3 Parameter 
Version vorsieht.

von mh (Gast)


Lesenswert?

Marc schrieb:
> Nein, probiers aus, es geht:
> // Selten dämlicher Code, aber unter C++ geht's
> char *strncpy(char *dest, const char *src) {
>     return strncpy(dest,src,100);
> }
> Compiliert mit gcc in C++11, wie oben beschrieben.

Nur weil es ohne Fehler oder Warnung compiliert, bedeutet nicht, dass es 
nicht UB ist.

Aber ich muss meine Vorherige Aussage korrigieren. Es ist nicht UB, da 
du dieses strncpy nicht im namespace std definierst oder deklarierst. 
Allerdings sagt der Standard, es ist "unspecified", ob strncpy außerhalb 
von namespace std bekannt ist (std::strncpy gibt es sicher, strncpy 
nicht).

von Dirk K. (merciless)


Lesenswert?

Dingens schrieb:
> Mark B. schrieb:
>> Dingens schrieb:
>>> Nur unterstützt Eclipse GCC leider nicht die Funktionen strlen und strcpy.
>>> (Ja string und cstring hab ich inkludiert. Hat nichts genützt)
>>
>> Selbstverständlich verfügt der GCC, oder besser gesagt: die
>> C-Standardbibliothek über diese Funktionen.
>>
>> Was ist denn die Fehlermeldung?
>
> Siehe Bild.

So viele Fehler in 3 Zeilen Code...

merciless

von Prio (Gast)


Lesenswert?

Dirk K. schrieb:

> So viele Fehler in 3 Zeilen Code...
>
> merciless

Unglaublich oder?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.