Postup pre ladenie OEM protokolov na platformách Linux/RaspberryPI

  • Vypnite autoštart KOM procesu (v konfigurácii procesu pomocou CNF) a vypnite KOM proces (pomocou Sysconsole)

  • Upravte Makefile pre OEM protokol a pridajte doň flag "-g", aby kompilátor zahrnul ladiace informácie. Príklad: zmena z
    CFLAGS= -I ../h
    na
    CFLAGS=-g -I ../h

  • Prekompilujte OEM protokol a nakopírujte výslednú knižnicu do adresára protdll:
    cd /home/d2000/oem 
    rm template.o template.so

    make
    cp template.so /opt/d2000/protdll/oem_prot11.so

  • V adresári, v ktorom sú zdrojové kódy OEM protokolu, naštartujte debugger a nastavte breakpoint na konkrétny riadok/riadky v OEM protokole (napr. v rámci procedúry Init alebo ReadAllPoints)
    Potvrďte "y", že chcete aktivovať breakpoint pri natiahnutí budúcich zdieľaných knižníc.
    cd /home/d2000/oem
    gdb /opt/d2000/bin/kom

    (gdb) break template.c:73
    No symbol table is loaded. Use the "file" command.
    Make breakpoint pending on future shared library load? (y or [n]) y

  • Spustite KOM proces (parameter /F0 slúži na vypnutie watchdogov)
    run /F0

  • Debugger sa zastaví na príslušnom riadku zdrojového riadku OEM protokolu:
    [Switching to Thread 0x72f161a0 (LWP 3369)]
    Thread 14 "S204b" hit Breakpoint 1, ReadAllPoints (St=0x75847580)
    at template.c:73
    73 template.c: Permission denied.
    (gdb) bt
    #0 ReadAllPoints (St=0x75847580) at template.c:73
    #1 0x00eb00b0 in ?? ()
    #2 0x006ae364 in ?? ()
    Backtrace stopped: previous frame identical to this frame (corrupt stack?)

  • Pokračujte v ladení pomocou štandardných príkazov debuggera gdb.


Napíšte komentár