Illegal instruction



  • 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



  • ja wichsen würd ich doch sagen



  • Segmentation Faults entstehen, wenn du in Speicher rumfummelst der dir nicht gehört. Benutz am besten mal einen Memory Debugger oder so was (EFence sollte auch auf Solaris arbeiten)

    Beispiel:

    char a[5]; 
    a[5]=0; //ups
    int *a;
    *a=1; //ups
    


  • kein problem 😉 😉



  • Kingruedi,

    danke fuer den Hinweis 🕶 Mein segmentation fault war tatsaechlich eine ueberschrittene Array-Grenze - uuupps!

    Jo, nach einem heissen C++ Wochenende sind jetzt alle Fehler ausgemerzt und das Programm laeuft 🙂 😃 🕶

    Also, nochmal ein dickes DANKE an alle Beteiligten fuer die Hinweise und die moralische Unterstuetzung 😉

    AchtungAnfaenger



  • @<prolog>
    das ist kein gueltiges Konstrukt.

    ja wichsen würd ich doch sagen

    :-ensure_loaded('allthefuckersiknow').

    % wichsen/2 defined in allthefuckers i know
    % alter/2 -''-

    erwachsen(X):-alter(X,Z),Z>18,!,inteligente_postings(X),!,selbstverantwortung(X).
    kind(X):-not(erwachsen(X)).
    wichser(X):-wichsen(X,_),kind(X).

    ? wichsen(<prolog> ).
    yes
    ? wichser(<prolog> ).
    yes
    ? wichser(prolog).
    no
    ? wichsen(prolog).
    no

    [ Dieser Beitrag wurde am 23.06.2003 um 14:56 Uhr von prolog editiert. ]



  • Hi

    Jetz ma ernst. Gut das es doch noch geklappt hat. Ich hoffe das war den Schweis wert. 🙂

    btw Ich finde es immer wieder spanned wenn bei mir ein Prog mit sig 11 beendet 😃

    [ Dieser Beitrag wurde am 23.06.2003 um 14:33 Uhr von prolog editiert. ]


Anmelden zum Antworten