Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Computer ControlsComputer Controls
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[STM32F0][Eclipse / OpenOCD] - GDB+OpenOCD. GDB error"No symbol table is lo

15 Lip 2015 08:59 1191 6
  • Poziom 6  
    Dzień dobry,


    Nie mogę debugować w środowisku zbudowanym w oparciu o Eclipse / OpenOCD / STlink / GDB. Dostaję błędy od gdb, które brzmią:

    6-gdb-set new-console on
    6^error,msg="No symbol table is loaded. Use the \"file\" command."
    (gdb)

    Dodałem opcję -g do Cross ARM GNU Assembler i Cross ARM C Compiler i Cross ARM C++ Compiler, ale efekt jest ten sam. Pytanie: czy we wszystkich tych kompilatorach musi być dodana opcja -g ?

    W Debug Configuration w GDB Hardware Debugging mam wybrany Legacy GDB Hardware Debugging Launcher. Załączam kilka zrzutów z tej konfiguracji:

    [STM32F0][Eclipse / OpenOCD] - GDB+OpenOCD. GDB error"No symbol table is lo [STM32F0][Eclipse / OpenOCD] - GDB+OpenOCD. GDB error"No symbol table is lo [STM32F0][Eclipse / OpenOCD] - GDB+OpenOCD. GDB error"No symbol table is lo [STM32F0][Eclipse / OpenOCD] - GDB+OpenOCD. GDB error"No symbol table is lo [STM32F0][Eclipse / OpenOCD] - GDB+OpenOCD. GDB error"No symbol table is lo

    Czy wiecie może co to oznacza i jak to naprawić? W którym miejscu w Eclipsie trzeba użyć tej komendy file i jaki argument ona przyjmuje?

    Załączam cały output z gdb:

    1-gdb-set confirm off
    1^done
    (gdb)
    2-gdb-set width 0
    2^done
    (gdb)
    3-gdb-set height 0
    3^done
    (gdb)
    4-interpreter-exec console echo
    4^done
    (gdb)
    5-gdb-show prompt
    5^done,value="(gdb) "
    (gdb)
    6-gdb-set new-console on
    6^error,msg="No symbol table is loaded. Use the \"file\" command."
    (gdb)
    7 symbol-file /home/mgoli/workspaceSTM32/stm32nucleo/Debug/stm32nucleo.elf
    &"symbol-file /home/mgoli/workspaceSTM32/stm32nucleo/Debug/stm32nucleo.elf\n"
    symbol-file /home/mgoli/workspaceSTM32/stm32nucleo/Debug/stm32nucleo.elf
    7^done
    (gdb)
    8-target-select remote localhost:3333
    =thread-group-started,id="i1",pid="42000"
    =thread-created,id="1",group-id="i1"
    *stopped,frame={addr="0x00000000",func="??",args=[]},thread-id="1",stopped-threads="all"
    8^connected
    (gdb)
    9 monitor reset halt
    &"monitor reset halt\n"
    @"target state: halted\n"
    @"target halted due to debug-request, current mode: Thread \n"
    @"xPSR: 0xc1000000 pc: 0x08000184 msp: 0x20002000\n"
    9^done
    (gdb)
    10 info proc
    &"info proc\n"
    &"Undefined info command: \"proc\". Try \"help info\".\n"
    10^error,msg="Undefined info command: \"proc\". Try \"help info\"."
    (gdb)
    11 load /home/mgoli/workspaceSTM32/stm32nucleo/Debug/stm32nucleo.elf
    &"load /home/mgoli/workspaceSTM32/stm32nucleo/Debug/stm32nucleo.elf \n"
    ~"Loading section .isr_vector, size 0x2bc lma 0x8000000\n"
    11+download,{section=".isr_vector",section-size="700",total-size="393835"}
    ~"Loading section .text, size 0x2511 lma 0x80002bc\n"
    11+download,{section=".text",section-size="9489",total-size="393835"}
    ~"Loading section .data, size 0x9c lma 0x80027d0\n"
    11+download,{section=".data",section-size="156",total-size="393835"}
    ~"Start address 0x80000c5, load size 10345\n"
    ~"Transfer rate: 19 KB/sec, 3448 bytes/write.\n"
    12 info program
    13-gdb-exit
  • Computer ControlsComputer Controls
  • Poziom 26  
    Odznacz reset+delay i halt. Z jaką optymalizacją kompiliujesz program?
  • Computer ControlsComputer Controls
  • Poziom 6  
    Niestety odznaczenie reset delay + halt nie pomogło. Projekt kompiluję z optymalizacją -O0.
    Używam toolchain gcc-arm-none-eabi-4_7-2013q1. Z tego co zrozumiałem do tej pory on nie wspiera optymalizacji -Og, dlatego korzystam z -O0. Czy to problem?

    Zrzut z gdb:

    1-gdb-set confirm off
    1^done
    (gdb)
    2-gdb-set width 0
    2^done
    (gdb)
    3-gdb-set height 0
    3^done
    (gdb)
    4-interpreter-exec console echo
    4^done
    (gdb)
    5-gdb-show prompt
    5^done,value="(gdb) "
    (gdb)
    6-gdb-set new-console on
    6^error,msg="No symbol table is loaded. Use the \"file\" command."
    (gdb)
    7 symbol-file /home/mgoli/workspaceSTM32/stm32nucleo/Debug/stm32nucleo.elf
    &"symbol-file /home/mgoli/workspaceSTM32/stm32nucleo/Debug/stm32nucleo.elf\n"
    symbol-file /home/mgoli/workspaceSTM32/stm32nucleo/Debug/stm32nucleo.elf
    7^done
    (gdb)
    8-target-select remote localhost:3333
    =thread-group-started,id="i1",pid="42000"
    =thread-created,id="1",group-id="i1"
    9-gdb-exit
  • Poziom 26  
    Jaki masz debug level (-g) ? -ggdb3?

    EDIT widzę, że samo -g, zmień na -ggdb3
  • Poziom 6  
    We właściwościach projektu -> C/C++ Build -> Settings -> Tool Settings -> Debugging mam ustawiony Debug Level na Maximum (-g3). Nie mogę tutaj wybrać opcji w stylu -ggdb3
    Dodałem opcję -ggdb3 wg Twoich podpowiedzi do Cross ARM GNU Assembler i Cross ARM C Compiler i Cross ARM C++ Compiler.
    Niestety nie pomogło.
    W międzyczasie pobrałem nowszą wersję toolchaina gcc-arm-none-eabi-4_9-2015q2. Ustawiłem Optimization Level na -O0 i mogę debugować.
    Jak myślisz jaka jest różnica pomiędzy tymi wersjami? O co może chodzić? Chciałbym jednak uruchomić to ze starszą wersją toolchaina (zalecenia do projektu...).
  • Poziom 26  
    Dobre pytanie. Możesz wrzucić pełne wywołanie kompilatora i linkera? Nie obiecuję, że dziś dam radę to obejrzeć, ale mówiąc szczerze sam jestem ciekaw co tam poszło nie tak.