[ABANDONED] GDB behaving abnormally (won't stop at breakpoints)

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • [ABANDONED] GDB behaving abnormally (won't stop at breakpoints)

    Hello all,
    I've been developing some application for quite a while and I now went into a weird error.

    Description of the development:
    • MK22FN512VLH12 (custom board)
    • FreeRTOS 9.0.0, custom heap from here: nadler.com/embedded/newlibAndFreeRTOS.html
    • newlib (no semihosting)
    • SEGGER RTT
    • Debuger "Other Options" contains: "-s -rtos GDBServer/RTOSPlugin_FreeRTOS" (everything else is pretty standard)
    • J-Link Plus Debug tool
    • J-Link Software version 6.30e
    • IDE KDS 3.2.0
    • GCC toolchain version 6 Q2 2017
    • The exact same problem happened with a FRDM-K82F dev board, another FreeRTOS 9.0.0 based firmware, using MCUXpresso 10.1.1 and some older version of the J-Link software

    It was all working correctly until I added some more code (yes, I know it probably have something to do with it, nevertheless this behavior is not expected), I could add breakpoints throughout the code, execute instructions step by step wherever I wanted. After adding this piece of code, I can step into the code until the first xTaskCreate. To be more specific, the exact point where things go wrong is inside the function prvAddNewTaskToReadyList(), instruction pxCurrentTCB = pxNewTCB;. If I step into this function (should stop at the next instruction), the firmware starts executing as if I pressed Resume, I can still pause the software and it kind of works. If I add any breakpoints to try to stop the FW after the mentioned instruction, the debug section breaks and I get the following messages on the terminal "[GDB SEGGER J-Link Debugging] JLinkGDBServerCL":
    ...Breakpoint reached @ address 0x00015290 ///----------------------------------------that's the breakpoint on the start of main()
    Reading all registers
    Read 4 bytes @ address 0x00015290 (Data = 0xFA63F00B)
    Removing breakpoint @ address 0x00015290, Size = 2
    Removing breakpoint @ address 0x0001989C, Size = 2
    Removing breakpoint @ address 0x000198C6, Size = 2
    Setting breakpoint @ address 0x0001989C, Size = 2, BPHandle = 0x0004
    Setting breakpoint @ address 0x000198C6, Size = 2, BPHandle = 0x0005
    Performing single step...
    ...Breakpoint reached @ address 0x0002075A
    Reading all registers
    Read 4 bytes @ address 0x0002075A (Data = 0xAF00B580)
    Setting breakpoint @ address 0x00015290, Size = 2, BPHandle = 0x0006
    Starting target CPU...
    ...Breakpoint reached @ address 0x0001989C
    Reading all registers
    Read 4 bytes @ address 0x00000000 (Data = 0x1FFFD1A0)
    Starting target CPU...
    ...Breakpoint reached @ address 0x0001989C
    Reading all registers
    Read 4 bytes @ address 0x00000000 (Data = 0x1FFFD1A0)
    Starting target CPU...
    ...Breakpoint reached @ address 0x0001989C
    Reading all registers
    Read 4 bytes @ address 0x00000000 (Data = 0x1FFFD1A0)
    Starting target CPU...
    The last 4 lines keep repeating forever and I can't pause the debugger. If I click Stop, it takes a long time and gives me an error message "Connection Shut Down" (but eventually stops).

    I tried the same process using the j-Trace Pro and got the same results.

    Any ideas?

    Best regards,
    Bruno
  • Hello Bruno,

    the reason for this behavior is the GDB client, which immediately starts the target over and over again.

    Can you provide us a project for reproduction on an FRDM-K82F eval board?

    Best regards
    Arne
    Please read the forum rules before posting.

    Keep in mind, this is *not* a support forum.
    Our engineers will try to answer your questions between their projects if possible but this can be delayed by longer periods of time.
    Should you be entitled to support you can contact us via our support system: segger.com/ticket/

    Or you can contact us via e-mail.