Anzeige:
Ergebnis 1 bis 5 von 5

Thema: illegal instruction ??

  1. #1
    Registrierter Benutzer
    Registriert seit
    21.10.2000
    Ort
    Köln
    Beiträge
    30

    Question illegal instruction ??

    hi ich hab ein Programm das eine Weile läuft und dann auf einmal Abschmiert (AIX) dann erzeugt es nen Core. den hab ich in den ddd geladen und alles was ich angezeigt bekomme ist:
    core was generated by `pbbparClient'.
    Program terminated with signal 4, Illegal instruction.
    0x00000000 in ?? ()
    (gdb) frame 0
    wenn ich dann auf Backtrace im ddd klicke bekomme ich
    #0 0x00000000 in ?? ()
    also ich bekomme keine Funtion raus von wo diese illegale instruktion herkommt. Bisher habe ich auf dem Weg ganz gut herausbekommen können wo das Problem liegt, aber momentan will es absolut nich

    kommt das Problem jemanden bekannt vor? oder gibt es gute andere Wege herauszufinden woher das Problem kommen könnte? ein normales hindebugen ist nicht drinn da das Programm erstmal ne weile läuft das im debuger nachzustellen währe eine Strafarbeit ....
    Wenn was absolut nicht funktioniert nenn es Windows *gg*

  2. #2
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Da der Backtrace nicht viel hergibt, vermute ich mal, dass die Applikation ohne Debuggingsymbole compiliert wurde.

    Kompilier sie mal mit und dann sollte der Backtrace auch eine Callstack anzeigen können.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  3. #3
    Registrierter Benutzer
    Registriert seit
    21.10.2000
    Ort
    Köln
    Beiträge
    30
    Das war mein erster Ansatz. zuerst wollte sich der Core partout nicht öffnen lassen. daraufhin hab ich das Prgramm mit Debuginfos kompiliert und neu losgejagt. Nur der Core will mir noch nicht so recht verraten was los is
    Wenn was absolut nicht funktioniert nenn es Windows *gg*

  4. #4
    Registrierter Benutzer
    Registriert seit
    05.06.2003
    Beiträge
    118
    Ein wenig abstrakt, aber zum Debuggen ziemlich nützlich: Wenn die Exception fliegt, nimm dir die Rücksprungadresse vom Stack und such' die dementsprechende Funktion dazu. Die kannst du mit den Debuginfos abgleichen und so herausbekommen, welche Zeile bzw. welcher Code den aktuellen Funktionscall getätigt hat.

    TME

  5. #5
    Registrierter Benutzer
    Registriert seit
    05.09.2002
    Ort
    Neuhausen
    Beiträge
    320
    Die Fehlerursache kommt daher, dass anscheinend Code-bzw. Nicht-Code-Bereiche ausgeführt werden, welche keine gültigen Instruktionen enthalten (z.B. Sprung irgendwo ins Nirvana). Die CPU löst dann einen Invalid-Instruction-Interrupt aus, welcher das OS mit Signal 4 quittiert.

    Nun, wenn du es nicht schaffst einen Backtrace anzuzeigen, dann hilft dir vermutlich der "Debugger für Arme" - printf - dabei die Stelle einigermassen zu lokalisieren.

    Beispiel:
    Code:
    #include <stdio.h>
    
    #define WHERE_AM_I(arg_) \
        printf(__FILE__ ":%d " arg_ "\n", __LINE__);
    
    int main(){
        WHERE_AM_I()
        WHERE_AM_I("Am Ende")
    }
    Gruss, Andy
    Geändert von RapidMax (12-05-2004 um 23:19 Uhr)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •