سؤال

How do you set memory breakpoints in Eclipse? That is, I would like to set a conditional breakpoint that triggers when the data at a given memory location changes.

This question has been asked before, but the only provided answer doesn't address the question and is essentially the same information that can be found in the Eclipse Online help.

What I am looking for is more detailed information (or an example would be good) for setting a conditional breakpoint in Eclipse that will trigger when the data at a specific memory address changes.

هل كانت مفيدة؟

المحلول

You need to use a watchpoint. From the page:

  1. Highlight the variable in the editor, or select it in the Outline view.
  2. Click Run > Toggle Watchpoint.
  3. Do any of the following:
    • To stop execution when the watch expression is read, select the Read check box.
    • To stop execution when the watch expression is written to, select the Write check box.
  4. The watchpoint appears in the Breakpoints view list.

نصائح أخرى

Solution that works:

 1/ Select the variable representing the pointer you want to break on in a given context in the "Variables" tab
 2/ Right click, then select "Add Watchpoint (C/C++)
 3/ In the field "Expression to watch", just replace the name of the variable by the memory address to break on.

Using a Watchpoint in Eclipse Oxygen:

  1. In the Expressions view (Window > Show View > Expressions), add an Expression such as: *(uint8_t*)0x231cc528. The cast tells Eclipse the memory location size.
  2. Right-click the added expression and select "Add Watchpoint".
  3. The resulting Watchpoint may be edited and controlled in the "Breakpoints" view.
  4. It may be important to edit the Watchpoint. If you want to e.g. detect changes done by other threads: right-click the Watchpoint in the "Breakpoints" view, select Breakpoint Properties... > Filter, UN-check "Restrict to Selected Processes and Threads"
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top