Illegal instruction



  • Hey Ihr,

    erstmal - ich bin so planlos, dass ich mir nichtmal sicher bin, ob das hier das richtige Unterforum fuer mein Problem ist.

    Und zwar habe ich ein C++ Programm, das ich mit dem sun compiler cc compiliert und gelinkt habe. Wenn ich jetzt versuche, das Programm auszufuehren, indem ich den Namen der ausfuehrbaren Datei in die Kommandozeile tippe, dann sagt der Computer

    ILLEGAL INSTRUCTION

    Was heisst das denn jetzt? Da ist ein Fehler innerhalb meines C++ Proramms und deshalb laeuft es nicht? Oder ist da was falsch mit der Art, wie ich versuche, das Programm zu starten??

    Und - woher auch immer der Fehler kommt - wo kann ich nachlesen, was ich falsch gemacht haben koennte? In der Anleitung zum Compiler? In der Betriebssystem-Dokumentation? Sonstwo?? Und wo finde ich die betreffende Dokumentation??

    Voellig ratlos 😞

    AchtungAnfaenger



  • also wenn der compiler ein ausfuehrbares program erstellt, dann kann es nicht so fehlerhaft sein das die komandozeile eine fehlermeldung bringt.

    unter linux schreibt man zum ausfuehren > ./a.out
    wobei a.out die ausfuerbare datei ist



  • Mirauder_Mo,

    unter unserem System ist das so:
    a.cpp wird nach compilieren zu a.o und dann nach linken zu a* (wobei der stern wohl nur anzeigt, dass es was ausfuehrbares ist)

    Ich hatte mal eine funktionierende Beispieldatei a.cpp, die liess sich mit ./a wunderbar ausfuehren.

    Hmm, wo koennt ich denn nun finden, was diese "illegal instruction" Meldung soll?

    Euer AchtungAnfaenger



  • HI

    Ich tippe mal das das keine Compilermeldung ist dann wär noch mindestens ne Zeilenzahl und ne detailiertere Beschreibung dabei.

    Ich vermute mal du arbeitest auf ner Sun Workstation o.Ä.
    Das benutzen ja auch sunOS bzw. Solaris in der Regel, welche wiederum unix derivate sind.
    Ich vermute ganz stark dass das ne Systemmeldung ist. So ne Art Kernel message.
    Ich würde mir an deiner Stelle die Os doku vornehmen. Viel weiter kann ich dir leider auch nicht helfen. Hatte noch nie das vergnügen auf ner Sun zu arbeiten.



  • Hey prolog (btw, prolog is 🕶 )

    ja, genau, ist ne sun workstation.
    Und, nein, es ist keine Zeilenangabe dabei, also hatt ich auch vermutet, dass es eher nicht vom compiler kommt. Hast Du ne Ahnung, woher man die OS Doku bekommt? Der Rechner ist Teil von nem ganzen Uni-Rechnernetz...

    Helpless,
    AchtungAnfaenger

    [ Dieser Beitrag wurde am 18.06.2003 um 22:28 Uhr von AchtungAnfaenger editiert. ]



  • passiert das auch bei einem einfachen hallo welt programm? vielleicht kompilierst du das programm ja für einen falschen prozessor?



  • Tom,

    noe, ich hab ein Beispielprogramm, da laeuft alles wie geschmiert.
    Ich seh auch keine Fehler in meinem eigenen Programm - aber dann bin ich halt auch ein ziemlicher Anfaenger, so dass das nicht unbedingt was zu heissen hat. Bin jetzt halt ziemlich verzweifelt, weil ich keinen Plan habe, wie ich an das Problem rangehen soll. "illegal instruction" gibt einem irgendwie nicht allzu viele Hinweise, wo es schief laufen koennte..

    Danke schonmal fuer Euer aller Bemuehen uebrigens 🙂

    AchtungAnfaenger



  • versuchs doch mal mit dem debugger.



  • HI

    Ich würds ma auf der sun hompage probieren.

    Diese Illegal Instruction errinnert mich irgendwie stark an ne Windows fehler meldund. Da steht dann in etwa Illegal Instruction. Operation read konnt nicht an Address 0xFFFblablab durchgeführt werde. Zeig doch ma bitte den Code deines Progs, wenn er nich so lang is.

    Und ich würde auch ma n einfaches Testprog machen und das ma probieren.



  • Hallo Ihr,

    also, das Programm ist etwas laenger (5 Seiten) und vielleicht auch etwas "schwierig" in dem Sinne, dass es eine Menge kommerzieller Software importiert. Und man weiss halt nicht so genau, was hinter den Kulissen des kommerziellen Programms ablaeuft..

    Nunja, das illegal instruction Problem scheint ja nicht ganz so trivial zu sein wie ich zunaechst dachte. Ich werde jetzt mal das helpdesk an der Uni totnerven 😉 Ich halt Euch auf dem Laufenden, was aus dem geheimnisvollen illegal instruction geworden ist!

    Danke nochmal fuer Eure Hilfe, Ihr seid echt klasse!!

    AchtungAnfaenger

    PS: Noch ne Anfaenger-Frage 😮 : wie startet man den debugger..???



  • illegal-instruction heisst AFAIK, dass die CPU einen Opcode erhält, mit dem sie nichts anfangen kann. Hast du vielleicht mit irgend welchen bösen Compiler Optionen rumgespielt oder überschreibst du böser Weise ein paar Array Grenzen?

    benutz vielleicht mal einen Memorydebugger



  • Hi

    Jepp, das geht aber auch wenn er im Prog mit wilden Pointern rumhantiert hat. 😉

    Ich denke ma von Compileroptionen hätte er was erzählt.



  • Hey Ihr,

    also, ich habe keine Pointer. Ich hab ein paar Arrays, aber keine Standardarrays, sondern eine Sorte, die von der kommerziellen Software definiert wird. Diese Sonderarrays haben keine fixe Groesse, sondern "wachsen wohl mit". So wie ein vector bei Java. (Ist bei C++ Vektoren vielleicht aehnlich, ich hab bisher halt nur Java programmiert).

    An Rumspielereien mit Compileroptionen haett ich folgendes zu bieten. Hab keine Ahnung, was damit bezweckt wird, aber die C++ Leute an der Uni haben mir gesagt, ich braeucht das alles unbedingt:

    Kompilierphase:
    CC -c -xO4 -xtarget=ultra -xarch=v9 -DNDEBUG -pto -PIC -DIL_STD -I/[und hier dann noch ein Haufen -I's mit den Pfaden zu den Verzeichnisen des kommerziellen Teils] blabla.cpp

    Linkphase:
    CC -xO4 -xtarget=ultra -xarch=v9 -DNDEBUG -pto -PIC -DIL_STD -I/[und hier schon wieder die ganzen kommerziellen pfade] blabla.o -o blabla -L/[hier dann die ganzen Pfade zu den kommerziellen libraries] -mt -lm -xarch=v9 -lsocket -lnsl

    Aeh, ja. 😕 Ist davon jetzt irgend 'ne Option gemeingefaehrlich??

    AchtungAnfaenger 😃



  • HI

    Oha, ok er hat optionen benutzt. Wer kann die bedienungsanleitung des gcc auswendig ? 😉



  • Hi

    Ich nochma. Hat aber nix mit deinem Problem zu tun. Jepp Prolog is 🕶
    und damit mein ich jetzt die Sprache...

    Und ich will auch ne Sun.... 64bit power und jede menge register....oha :p



  • versuch am besten mal möglichst viele Optionen wegzulassen

    @prolog
    das ist ja kein gcc sondern der SUN C Compiler (früher hies der glaub ich Forte CC und nun gehört das wohl zu SUN One oder so)



  • @prolog: das ist wohl eher suns forte cc oder wie der heißt



  • Hi

    uups. Aber gcc ist doch portiert worden !?
    Ist ja auch egal. Dann muss er halt im manual für diesen comp nachschauen. 🙂



  • jo, es gibt auch den GCC für Solaris

    http://gcc.gnu.org/install/specific.html#--solaris2*



  • Hallo zusammen,

    ich wollt mich nochmal gemeldet haben (falls es noch wen interessiert).
    HAb nochmal ganz von vorn angefangen mit meinem Code, von null auf zusammengebaut (wie sichs ja auch eigentlich gehoert 😉 ). Es sieht so aus als kaem das illegal instruction Problem von den komischen Mitwachsarrays des kommerziellen Teils. Wenn ich die weglass, gibts keine illegal instructions mehr - aber dafuer jede Menge segmentation faults 🙄 (was auch immer das schon wieder is)

    Wie ich C++ liiiiebe.. :o

    AchtungAnfaenger


Anmelden zum Antworten