问题
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.
回答1:
Xcode uses gdb
(or lldb
, 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.
回答2:
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.
回答3:
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.
回答4:
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?
来源:https://stackoverflow.com/questions/4801175/tracking-variable-or-memory-change-in-xcode