Tracking variable or memory change in Xcode?

2019-01-17 11:44发布

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.

4条回答
叛逆
2楼-- · 2019-01-17 12:25

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 (or w s e (int *)0x12345678)

This assumes your variable is an int. It will create an hardware watchpoint on this address.


Hope this helps.

查看更多
孤傲高冷的网名
3楼-- · 2019-01-17 12:25

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?

查看更多
成全新的幸福
4楼-- · 2019-01-17 12:34

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.

查看更多
女痞
5楼-- · 2019-01-17 12:35

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.

查看更多
登录 后发表回答