This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Segger EMBEDDED STUDIO debugger breaks at random lines

Hello

I am running this version of SES

SEGGER Embedded Studio for ARM

Release 5.34a  Build 2021011401.44914

Nordic Edition

Windows x64

When I run my program in Segger it keeps stopping at these two particular lines. I do not understand why it is breaking because there are no breakpoints set. I deleted all of them.

It seems as if there are two 'hidden' breakpoints at these two lines. The Breakpoints window shows none.

Can someone please help?

Kind regards

Mohamed

Parents
  • Hello Mohamed,

    Could you specify which two lines you are referring to?
    Is it the NRF_BREAKPOINT_COND you are referring to?

    Could you also make sure to have DEBUG defined in your preprocessor defines, like shown in the included image?

    This will make the logger output a detailed error message whenever a non-NRF_SUCCESS error code is passed to an APP_ERROR_CHECK.

    Best regards,
    Karl

  • Hi Karl,

    I am not sure what NRF_BREAKPOINT_COND is. But just before this problem started showing up I tried to set a data breakpoint breaking when a variable is set to a particular value. I thought it di not work because I could not see any breakpoint in the Breakpoints window in SES. Could it be that this data breakpoint is actually set but not showing up?

    Kind regards

    Mohamed Belaroussi

  • Hello again Mohamed Belaroussi,

    Learner said:
    How do I renew my licence?

    Please see this ticket for further information on how to update your SES license.

    Learner said:
    But just before this problem started showing up I tried to set a data breakpoint breaking when a variable is set to a particular value. I thought it di not work because I could not see any breakpoint in the Breakpoints window in SES. Could it be that this data breakpoint is actually set but not showing up?

    If I recall correctly I think that Segger might have had some issues with data breakpoints earlier.
    Unfortunately, this is then an issue with Segger Embedded Studio and is not directly with any Nordic product, so you have to open a ticket with Segger directly to have this issue examined.

    Best regards,
    Karl

  • Hello Karl,

    Thank you. I am not sure about which MAC address to use.

    C:\WINDOWS\System32>ipconfig /all

    Windows IP Configuration

    Host Name . . . . . . . . . . . . : G4S-L0226
    Primary Dns Suffix . . . . . . . : g4smtl.com
    Node Type . . . . . . . . . . . . : Hybrid
    IP Routing Enabled. . . . . . . . : No
    WINS Proxy Enabled. . . . . . . . : No
    DNS Suffix Search List. . . . . . : g4smtl.com
    dev.g4smtl.com
    emsysdemo.local

    Ethernet adapter Ethernet:

    Media State . . . . . . . . . . . : Media disconnected
    Connection-specific DNS Suffix . :
    Description . . . . . . . . . . . : Intel(R) Ethernet Connection (7) I219-LM
    Physical Address. . . . . . . . . : F8-B4-6A-BB-CE-96
    DHCP Enabled. . . . . . . . . . . : Yes
    Autoconfiguration Enabled . . . . : Yes

    Wireless LAN adapter Local Area Connection* 1:

    Media State . . . . . . . . . . . : Media disconnected
    Connection-specific DNS Suffix . :
    Description . . . . . . . . . . . : Microsoft Wi-Fi Direct Virtual Adapter
    Physical Address. . . . . . . . . : 50-E0-85-76-3D-43
    DHCP Enabled. . . . . . . . . . . : Yes
    Autoconfiguration Enabled . . . . : Yes

    Wireless LAN adapter Local Area Connection* 2:

    Media State . . . . . . . . . . . : Media disconnected
    Connection-specific DNS Suffix . :
    Description . . . . . . . . . . . : Microsoft Wi-Fi Direct Virtual Adapter #2
    Physical Address. . . . . . . . . : 52-E0-85-76-3D-42
    DHCP Enabled. . . . . . . . . . . : Yes
    Autoconfiguration Enabled . . . . : Yes

    Ethernet adapter Ethernet 3:

    Media State . . . . . . . . . . . : Media disconnected
    Connection-specific DNS Suffix . : g4smtl.com
    Description . . . . . . . . . . . : TAP-Windows Adapter V9
    Physical Address. . . . . . . . . : 00-FF-E8-A6-9E-83
    DHCP Enabled. . . . . . . . . . . : Yes
    Autoconfiguration Enabled . . . . : Yes

    Wireless LAN adapter Wi-Fi:

    Connection-specific DNS Suffix . : g4smtl.com
    Description . . . . . . . . . . . : Intel(R) Wireless-AC 9560 160MHz
    Physical Address. . . . . . . . . : 50-E0-85-76-3D-42
    DHCP Enabled. . . . . . . . . . . : Yes
    Autoconfiguration Enabled . . . . : Yes
    Link-local IPv6 Address . . . . . : fe80::dde5:4c8a:668d:bff5%9(Preferred)
    IPv4 Address. . . . . . . . . . . : 10.20.10.75(Preferred)
    Subnet Mask . . . . . . . . . . . : 255.255.255.0
    Lease Obtained. . . . . . . . . . : 20 August 2021 08:59:04
    Lease Expires . . . . . . . . . . : 20 August 2021 17:02:03
    Default Gateway . . . . . . . . . : 10.20.10.1
    DHCP Server . . . . . . . . . . . : 10.20.20.18
    DHCPv6 IAID . . . . . . . . . . . : 156295301
    DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-25-F9-7F-68-F8-B4-6A-BB-CE-96
    DNS Servers . . . . . . . . . . . : 10.20.20.20
    10.20.20.18
    10.140.0.3
    NetBIOS over Tcpip. . . . . . . . : Enabled

    Ethernet adapter Bluetooth Network Connection:

    Media State . . . . . . . . . . . : Media disconnected
    Connection-specific DNS Suffix . :
    Description . . . . . . . . . . . : Bluetooth Device (Personal Area Network)
    Physical Address. . . . . . . . . : 50-E0-85-76-3D-46
    DHCP Enabled. . . . . . . . . . . : Yes
    Autoconfiguration Enabled . . . . : Yes

    If I recall correctly I think that Segger might have had some issues with data breakpoints earlier.

    Does this mean that if I update to a more recent SES version the data breakpoints might work?

    Unfortunately, this is then an issue with Segger Embedded Studio and is not directly with any Nordic product, so you have to open a ticket with Segger directly

    I have tried to get help from Segger with a problem I had few months ago with SES Nordic Edition but they refused to help. They said Segger do not support SES Nordic Edition.

    Kind regards

    Mohamed Belaroussi

  • Hello again,

    Learner said:
    I am not sure about which MAC address to use.

    You should use your physical address of your Ethernet adapter for the MAC address field.

    Learner said:
    Does this mean that if I update to a more recent SES version the data breakpoints might work?

    You could try that, sure.

    Learner said:
    I have tried to get help from Segger with a problem I had few months ago with SES Nordic Edition but they refused to help. They said Segger do not support SES Nordic Edition.

    Aha, I understand. Could you show me the two lines which the program stops as - the ones you are referring to in your ticket description?

    Best regards,
    Karl

  • Hi Karl,

    The line in blue is where the program was breaking without a breakpoint being set. Note, I did try to set a data breakpoint for the condition gs_radio_handler.rx_device_id == 649140 but I am not sure if it worked or not. 

    gs_radio_handler.rx_device_id = util_GetUInt32(&crypto_buf_enc[1]);
    if ( gs_radio_handler.rx_device_id == 946074 )  

    Kind regards

    Mohamed

  • Hello again Mohamed,

    Learner said:
    but I am not sure if it worked or not. 

    Could you share with me how the debug breakpoint screen looks after you've added the data breakpoint, and what you click on in order to delete it?

    Could you perform a small test, in which you open a mint condition example from the SDK, run it, and see that there is no breakpoints being triggered, and then redo the test after having added and removed a data breakpoint on any of the variables? Are you then still seeing any lingering behavior of the data breakpoint?
    If so, could you then send me the SES project file, so I may take a closer look and see what might be going wrong?

    Best regards,
    Karl

Reply
  • Hello again Mohamed,

    Learner said:
    but I am not sure if it worked or not. 

    Could you share with me how the debug breakpoint screen looks after you've added the data breakpoint, and what you click on in order to delete it?

    Could you perform a small test, in which you open a mint condition example from the SDK, run it, and see that there is no breakpoints being triggered, and then redo the test after having added and removed a data breakpoint on any of the variables? Are you then still seeing any lingering behavior of the data breakpoint?
    If so, could you then send me the SES project file, so I may take a closer look and see what might be going wrong?

    Best regards,
    Karl

Children
  • Hi Karl,

    Thank you for trying to investigate this problem further.

    I will provide you with the requested information later on today.

    What is the correct way of setting a data breakpoint in Segger Embedded Studio?

    Note, I am using the version below.

    SEGGER Embedded Studio for ARM

    Release 5.34a  Build 2021011401.44914

    Nordic Edition

    Windows x64

    Kind regards

    Mohamed

  • Hello again Mohamed,

    Learner said:
    I will provide you with the requested information later on today.

    Did you get a chance to look at this further? Or is this perhaps not an issue anymore?

    Learner said:
    What is the correct way of setting a data breakpoint in Segger Embedded Studio?

    Click on the debug tab and select Breakpoints -> New Data Breakpoint option to setup a data breakpoint in Segger Embedded Studios. The new breakpoint will appear in the Breakpoints window. You can see the breakpoints windows if you click on Debug and select Breakpoints -> Breakpoints in the dropdown menu.
    It might also be helpful to have a look through Segger's own page regarding Data Breakpoints and how to use them.

    Best regards,
    Karl

  • Good Morning Karl,

    Did you get a chance to look at this further? Or is this perhaps not an issue anymore?

    Not an issue anymore.

    Click on the debug tab and select Breakpoints -> New Data Breakpoint option to setup a data breakpoint in Segger Embedded Studios.

    I did setup a data breakpoint as you described but the program never stops and I know full well the condition is occurring. The breakpoint I set is to break when when the expression  cnt==1 is true. I know the counter cnt is incremented because when I set a normal breakpoint on the line where it gets incremented the program does break. Note, cnt is a volatile int16_t but I don't think this explains the behaviour I am seeing.

    Kind regards
    Mohamed 
  • Hello again, Mohamed

    Thank you for your patience with this. 

    Learner said:
    Not an issue anymore.

    I am glad to hear that this is no longer an issue for your development.

    Learner said:
    I did setup a data breakpoint as you described but the program never stops and I know full well the condition is occurring. The breakpoint I set is to break when when the expression  cnt==1 is true. I know the counter cnt is incremented because when I set a normal breakpoint on the line where it gets incremented the program does break. Note, cnt is a volatile int16_t but I don't think this explains the behaviour I am seeing.

    Hm, this looks correct to me. I just tested this here on my end, and I am seeing the same behavior you describe - strange!
    I have created an internal ticket for this so that our SES NE developers may examine this more closely.
    Thank you for bringing this to our attention! :) 

    Best regards,
    Karl

  • Hello again, Mohamed

    I just heard back from our SES NE developers and they are already aware of the issue and have raised an issue with Segger directly. In the meantime, they had this to say about the issue:

    Data breakpoints have a certain latency so the program will stop a few instructions after the actual variable is updated. To verify add some dummy linear code lines (for instance a few volatile vars which are incremented) after the watched counter is changed. To get a precise analysis of a stray variable write from a crazy pointer you have to use instruction trace and look a couple of instructions back in the trace from where the program stops. This latency does not apply to program break points as they operate on the program counter.

    So this should function as a workaround while we wait for it to be fixed. I hope it helps! :)

    Best regards,
    Karl

Related