Is there any way to track variable changes or memory changes in Xcode? I'm looking for functionality like Visual Studio's data breakpoint.
I want to know where my object's view frame is being changed. I want to set a breakpoint at a member variable and run it. Then I could determine where it's changed.
You can use hardware watchpoints.
You have to get the address of the variable you want to track (type
p &my_var
in gdb prompt).It will print somehting like
0x12345678
.With gdb: type
watch *(int *)0x12345678
.With lldb:
watch set expression (int *)0x12345678
(orw s e (int *)0x12345678
)This assumes your variable is an
int
. It will create an hardware watchpoint on this address.Hope this helps.
I know this post is old but in case you are still wondering I posted a detailed answer here: In XCode 6 how can you set a watchpoint without stopping execution?
Yes.
Under the Run menu there is "Debugger" which provides a visual frontend to gdb.
Also, there is a breakpoint button next to the Build and Run button. You can click that and manage your breakpoints under Run > Manage Breakpoints.
Xcode uses
gdb
(orlldb
, but that's another story) to implement its debugging functionality.gdb
has the ability to set hardware watchpoints and hence so does Xcode.This is a useful page for generic debugging of memory errors. Xcode's debugging console window is really just a
gdb
shell, you can type in commands as you please. The ever-helpful Quinn Taylor explains how to do so in this related post.If you'd rather avoid interacting with
gdb
directly, you can right-click a variable in Xcode's debugging window and select "Watch Variable". Xcode will then alert you whenever your variable's value has been changed.