This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

RM48L952: GDB Software breakpoints with XDS GDB Agent

Part Number: RM48L952

Hello there,

I am trying to debug on a RM48L952 HDK using gdb.

I made a simple project in CCS where i read out a pushbutton (GIOA 7) and write to one of the LEDs (NHET1 18). I compiled the source code using the TI arm compiler in CCS. This gives me a .out file (elf file).

As described in http://processors.wiki.ti.com/index.php/XDS_GDB_Agent, I open gdb server with gdb_agent_console.exe with the .dat file used in the testing of the connection.

We can use an arm compatible gdb to connect to the target, we can load the .out file, we can step, continue and place hardware breakpoints.

The problem is we are unable to use software breakpoints, gdb will respond with something like :

Warning:
Cannot insert breakpoint 0.
Cannot access memory at address 0x6794

Where the address 0x6794 is the address of the breakpoint in the .txt section of the .elf file.

I have some questions about this:

1) Is it true that with the GDB agent the RM48 runs the code from RAM?

2) Can you only use software breakpoints when executing from flash?

3) How can we use software breakpoints from within GDB on a RM48?

We want to connect our RM48 to our linux server where we can use python scripting from within gdb to run automated tests, using the XDS GDB Agent seemed like easiest way to do this.

Kind regards,

Karel

 

  • Hello Karel,

    I am, admittedly, not an expert with GDB. This is some additional information on the following and other posts within the forum that you might find helpful. For the other posts, please search on GDB debug.

    e2e.ti.com/.../378955
    e2e.ti.com/.../462387)

    I've also forwarded your post to our debug team so they can have a look at it as well if they have any additional guidance to offer.
  • Karel,

    I have a couple of questions.

      - Which debug probe are you using (xds100v2, xds2xx, ...)?

      - What version of the emulation package are you using?

    In general GDB agent just follows what GDB tells it to do.  The GDB agent does not contain  flash support for RM48, so downloading a program to flash or setting software breakpoints in a flashed program cannot be done within the GDB session.  If you want to debug such a program you need to use an external flash loader to get it on the target before bringing up GDB.

    Answers:

    1) Is it true that with the GDB agent the RM48 runs the code from RAM? 

    It will if the application is built to run from RAM.  You can debug code in flash if you get it onto the target by another means.

    2) Can you only use software breakpoints when executing from flash?

    You will only be able to use hardware breakpoints with a program in flash.

    3) How can we use software breakpoints from within GDB on a RM48?

    If the program is running from RAM you can use software breakpoints.  If it is running from flash you will need to use hardware breakpoints.  The GDB  "set breakpoint auto-hw on" is useful especially if you are doing source level single stepping.

  • Thanks for your response,

    We are using the XDS100v2 which is present on the www.ti.com/.../tmdsrm48hdk,
    XDS Emulation Software Package version 6.0.579.0 (Windows).

    The "set breakpoints auto-hw on" sets a HW breakpoint if a SW can't be set (Read-only memory), it seems like however gdb does not recognize the memory regions. These regions are listed in the .map file generated by CCS so we'll have to insert those into gdb.

    I'm not in the office today so I'll check if this fixes it tomorrow.

    Kind regards,

    Karel
  • Hello Chuck,

    Thanks for the references, it seems like the .dat file is working correctly. I borrowed the testBoard.dat from CCS as advised.

    Kind regards,
    Karel
  • Hello again Craig,

    I attached the program i am trying to debug and the .dat file i am using. I write the program to flash using CCS. I then run :

     gdb_agent_console.exe testBoard.dat

    This opens up a gdb server on port 55000.

    I then open a gdb session:

    (gdb) target remote 192.168.96.101:55000
    Remote debugging using 192.168.96.101:55000

    (gdb) file /home/karel/Hercules/gdb_test/Debug/gdb_test.out
    A program is being debugged already.
    Are you sure you want to change the file? (y or n) y
    Reading symbols from /home/karel/Hercules/gdb_test/Debug/gdb_test.out...done.

    After this i manualy define my memory regions so that hw breakpoints will be used


    (gdb) mem 0x20 0x6e18 ro
    (gdb) mem 0x8000000 0x0 rw
    (gdb) info mem
    Using user-defined memory regions.
    Num Enb Low Addr High Addr Attrs
    1 y 0x00000020 0x00006e18 ro nocache
    2 y 0x08000000 0x100000000 rw nocache

    These addresses are derived from the .map file generated by CCS:

    MEMORY CONFIGURATION

    name                      origin           length            used            unused        attr      fill
    ----------------------        --------           ---------           --------           --------           ----      --------
    VECTORS          00000000      00000020      00000020      00000000          X
    FLASH0              00000020      0017ffe0        00006df6      001791ea       R X
    FLASH1              00180000      00180000      00000000      00180000       R X
    STACKS             08000000      00001500      00000000      00001500       RW
    RAM                   08001500      0003eb00      00000014      0003eaec      RW


    SEGMENT ALLOCATION MAP

      run origin      load origin      length      init length      attrs      members
    ----------             -----------      ----------        -----------        -----           -------
    00000000      00000000      00006e18   00006e18      r-x
    00000000      00000000      00000020   00000020      r-x      .intvecs
    00000020      00000020      00006896   00006896      r-x      .text
    000068b8      000068b8      00000540   00000540      r--      .const
    00006df8        00006df8     00000020    00000020     r--      .cinit
    08001500       08001500    00000014    00000000      rw-
    08001500       08001500    00000014    00000000      rw-      .data

     

    I then add a breakpoint on sys_main.c:82 (inside the infinite while loop)


    (gdb) b sys_main.c:82
    Breakpoint 1 at 0x6784: file ../source/sys_main.c, line 82.
    (gdb) c
    continuing.
    Note: automatically using hardware breakpoints for read-only addresses.

    This last line is as expected and as we hoped.


    Breakpoint 1, main () at ../source/sys_main.c:82
    82       gioSetBit(hetPORT1, 18, val);

    At this point i would like to be able to call a function using the call command of gdb.


    (gdb) call gioSetBit((gioPORT_t*) 0xfff7b84c, 18, 0)
    Could not write register "f7"; remote failure reply 'E09'

    In the gdb_agent_console terminal i get this message :

    Bad command format: P

    Q: Is it possible to use the call command from gdb to call functions on the remote Hercules target? How?

    Kind regards,

    Karel

    3482.gdb_test.zip

  • Karel,

    It looks like gdb agent is not supporting all of the registers required by gdb for remote procedure calls. I will get my hands on a Hercules target and investigate further. Can I ask which gcc toolchain you are using?

    Regards,
    Craig
  • Craig,

    We recompiled gdb 7.12.50.

    We enabled the verbose mode of the gdb agent.  In gdb if we ask for info reg we get r0 - r13 + sr + lr + pc +cpsr indicating that the target description lists the cpu with a ‘org.gnu.gdb.arm.core’ feature(non-M-profile ARM targets)  (from 

    When the error occurs we see the following info on the gdb agent:

    >>>>    %$P17=00000000000000000000000000000#75
    Bad command format: P
    <<<<   $E09#00

    where:

    n…=r…

    Write register n… with value r…. The register number n is in hexadecimal, and r… contains two hex digits for each byte in the register (target byte order).

    from 

    Hope this helps,

    Kind regards,

    Karel

     

  • Update:

    We noticed that if we reduce the amount of zeros that are written to register 17 (which should correspond to the width) to 8 zeros (32 bits) that the gdb agent (and cpu) accepts it. We tried writing the same amount of zeros (24) to register 18 it also returns with the same error. Note that these register numbers are all hex as this is how they are written in gdb and the gdb agent.

    When reading from the registers the return value varies in length (length becomes shorter as register number becomes higher). Seems like gdb does not recognize that these registers are 32 bits wide.

    It seems like the gdb agent tells gdb that the architecture has an FPA (which it dooesn't)

  • Karel,

    Thanks for the additional information. It's been a while since I looked at this so I apologize.

    Register 17 corresponds to f7. correct? The problem appears to be that when writing the registers individually that gdb-agent is not accepting more than 32-bits of data for a register, even though f0-f7, fps are all 96-bits.

    Register f7 is part of the 'org.gnu.gdb.arm.fpa' feature. For reasons I cannot remember we are returning placeholders for these registers in response to the register info command even though we don't try to access these registers on the target. How does gdb determine which set of features the RSP server supports? Is this based solely on the size of the response to the register info command?

    I still am waiting on hardware (I work remotely and don't have access to that target directly).

    -Craig
  • Hey Craig,

    Register f7 corresponds to register 0x17 (decimal 23) in the org.gnu.gdb.arm.fpa feature, inside gdb we can see this and gdb also shows the correct length (96).

    We are looking into how gdb determines this, it can determine some things using the qSupported packet ()

    (We see this packet coming into the gdb agent, however we see nothing tht relates to fpa or anything like that being communicated.)

     Seems like this is done with the 'target remote ...' command (  

    Kind regards,

     

    Karel

  • Update:

    By changing the target description in gdb with the right architecture/features (vfp) we were able to call functions successfully.

    After the third function call the gdb agent stops working and does not respond anymore.

    The gdb agent output with GDB_AGENT_DISPLAY_LEVEL = 100 is below this message.

    We called gioSetBit(0xFFF7B84C, 18, 1)  which is located on 0x0000561c

    (you can see the arguments being written to the registers and the PC being set accordingly).

    On the third call the gdb agent stops at >>>> %$c#63

    Kind regards,

    Karel

    >>>> %$p1a#02
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p1b#03
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p1c#04
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p1d#05
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p1e#06
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p1f#07
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p20#d2
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p21#d3
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p22#d4
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p23#d5
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p24#d6
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p25#d7
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p26#d8
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p27#d9
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p28#da
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p29#db
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p2a#03
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p2b#04
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p2c#05
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p2d#06
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p2e#07
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p2f#08
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p30#d3
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p31#d4
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p32#d5
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p33#d6
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p34#d7
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p35#d8
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p36#d9
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p37#da
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p38#db
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p39#dc
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p3a#04
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$Pe=fc5c0000#13
    <<<< $OK#00
    >>>> %$P0=4cb8f7ff#57
    <<<< $OK#00
    >>>> %$P1=12000000#41
    <<<< $OK#00
    >>>> %$P2=01000000#40
    <<<< $OK#00
    >>>> %$Pd=f00f0008#e5
    <<<< $OK#00
    >>>> %$m5cfc,4#2e
    <<<< $2bffffeb#00
    >>>> %$Pf=1c560000#b2
    <<<< $OK#00
    >>>> %$Z1,5cfc,4#78
    Attempting to set hardware breakpoint at address=0x5cfc.
    SetHWBP()
    SetHWBP() returns JobId=0
    New ctools hardware breakpoint set at address=0x5cfc. Job id = 0.
    <<<< $OK#00
    >>>> %$c#63
    <<<< $T050f:fc5c0000;#00
    >>>> %$g#67
    <<<< $4cb8f7ff010000000100000005000000000000000000000000000000000000000000000000000000000000000000000000000400f00f0008fc
    5c0000fc5c0000#00
    >>>> %$P0=00000000#3d
    <<<< $OK#00
    >>>> %$P1=07000000#45
    <<<< $OK#00
    >>>> %$P2=00000000#3f
    <<<< $OK#00
    >>>> %$Pc=07000000#77
    <<<< $OK#00
    >>>> %$Pd=f80f0008#ed
    <<<< $OK#00
    >>>> %$Pe=7c670000#b9
    <<<< $OK#00
    >>>> %$Pf=7c670000#ba
    <<<< $OK#00
    >>>> %$P19=df010020#e4
    <<<< $OK#00
    >>>> %$z1,5cfc,4#98
    clear_hwbp( 5cfc) called
    clear_hwbp: found bp
    clear_hwbp: reference count: 1
    calling KillJob(0)
    <<<< $OK#00
    >>>> %$m677c,4#d4
    <<<< $000050e3#00

  • That looks like execution is never halting after the continue command.  Either it's not successfully setting the hardware breakpoint at the end of the function or it is not hitting that breakpoint (possibly due to an exception).

    Is it consistently the 3rd time you call the function?

    Is it possible to ^C in GDB to regain control?  I believe that will cause GDB to halt the target.

    It looks like the portion of the log you sent was a successful run.  Can you share the log from where it goes wrong?

    -Craig

  • >>>> %$m6784,4#a6
    <<<< $00209de5#00
    >>>> %$p19#da
    <<<< $df010060#00
    >>>> %$p1a#02
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p1b#03
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p1c#04
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p1d#05
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p1e#06
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p1f#07
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p20#d2
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p21#d3
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p22#d4
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p23#d5
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p24#d6
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p25#d7
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p26#d8
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p27#d9
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p28#da
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p29#db
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p2a#03
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p2b#04
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p2c#05
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p2d#06
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p2e#07
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p2f#08
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p30#d3
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p31#d4
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p32#d5
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p33#d6
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p34#d7
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p35#d8
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p36#d9
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p37#da
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p38#db
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p39#dc
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$p3a#04
    ERROR: read_one_register() backend call returned 2
    <<<< $xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
    >>>> %$Pe=fc5c0000#13
    <<<< $OK#00
    >>>> %$P0=4cb8f7ff#57
    <<<< $OK#00
    >>>> %$P1=12000000#41
    <<<< $OK#00
    >>>> %$Pd=f00f0008#e5
    <<<< $OK#00
    >>>> %$m5cfc,4#2e
    <<<< $2bffffeb#00
    >>>> %$Pf=1c560000#b2
    <<<< $OK#00
    >>>> %$Z1,5cfc,4#78
    Attempting to set hardware breakpoint at address=0x5cfc.
    SetHWBP()
    SetHWBP() returns JobId=0
    New ctools hardware breakpoint set at address=0x5cfc. Job id = 0.
    <<<< $OK#00
    >>>> %$Z1,6784,4#f0
    Attempting to set hardware breakpoint at address=0x6784.
    SetHWBP()
    SetHWBP() returns JobId=0
    New ctools hardware breakpoint set at address=0x6784. Job id = 0.
    <<<< $OK#00
    >>>> %$c#63



    it hangs here...

    ^C in gdb..

    GDB output:
    Program received signal SIGTRAP, Trace/breakpoint trap.
    gioGetBit (port=0xffffffff, bit=24412) at ../source/gio.c:335
    335 {
    The program being debugged was signaled while in a function called from GDB.
    GDB remains in the frame where the signal was received.
    To change this behavior use "set unwindonsignal on".




    gdb agent output:

    <<<< $T050f:8c560000;#00
    >>>> %$qfThreadInfo#bb
    <<<< $m0#00
    >>>> %$qsThreadInfo#c8
    <<<< $l#00
    >>>> %$z1,5cfc,4#98
    clear_hwbp( 5cfc) called
    clear_hwbp: found bp
    clear_hwbp: reference count: 1
    calling KillJob(0)
    <<<< $OK#00
    >>>> %$z1,6784,4#10
    clear_hwbp( 6784) called
    clear_hwbp: found bp
    clear_hwbp: reference count: 1
    calling KillJob(0)
    <<<< $OK#00
    >>>> %$g#67
    <<<< $34bcf7ff070000000000000005000000000000000000000000000000000000000000000000000000000000000000000001000000f80f00087c
    6700008c560000#00
    >>>> %$m568c,4#d3
    <<<< $08d04de2#00
    >>>> %$m8000ff8,4#99
    <<<< $ffffffff#00
    >>>> %$m8000ffc,4#c4
    <<<< $5c5f0000#00


    It is third call consistently, when i then ^C it it will always hang on every call.
  • I noticed that this time it is trying to set two breakpoints (0x5cfc and 0x6784). Assuming there are adequate resources that should be fine, but the curious thing about the output is that it appears both breakpoints are getting assigned the same internal id (JobId) - they should be different. It almost looks like the second breakpoint could be overwriting the first - which might explain why it is not halting at the end of the function call.

    One thing you could try is to temporarily rename the ctools librar run again. If the gdb-agent doesn't find ctools library it should set the hardware breakpoints through a different mechanism. That will tell me whether the issue is in the ctools library.

    The ctools library can be found in <ccs-install>/ccs_base/emulation/analysis/bin
  • renamed ctools.dll 

    calling function still does not work, the program will just continue running.

    Placing a hardware breakpoint (what used to work before) also doesn't work anymore, program just keeps running.

  • Sorry.  I was under the impression that the low level debug driver supported hardware breakpoints directly, perhaps I was wrong.  If you could provide the log I can verify that it is not something in gdb-agent. 

    I've run into an issue with the embedded arm tool chain I have - the gdb in that package doesn't support coff files.  Any chance I can get a hold of the gdb you have built?

  • Hello,

    We are using the most recent gdb 

    We use the TI compiler and generate a .out file which is in ELF format.

    Due to the issues we kept running into with the gdb agent we chose to take another jtag probe that hosts a GDB server.

    Thanks for your effort,

    Kind regards,

    Karel