On Jul 27, 2012, at 2:35 AM, Markus Spoettl <ms_li...@shiftoption.com> wrote:

> On 7/27/12 5:10 AM, Nick Zitzmann wrote:
>> I've got a view that, according to Quartz Debug, is invalidating a large and
>> unnecessary portion of the view when certain user events happen.
>> 
>> The problem is, I have no idea what is causing this to happen. What
>> strategies are best for debugging the -setNeedsDisplayInRect: method to find
>> out specifically who is calling it where and with what frame?
>> 
>> I can't put a symbolic breakpoint on the method, because it gets called very
>> often, including when the app is activated, which causes Xcode to reactivate
>> itself and get in the way. I then changed the breakpoint to auto-continue and
>> just print the stack trace each time the method is called, but now I feel
>> like I'm looking for a needle within a huge console log. I really need it to
>> break when the rect is of a certain size, but the NSRect data structure is
>> more than twice as large as a CPU register on x86_64, so the structure is
>> placed on the stack, but how do I break on a variable buried within the
>> stack?
> 
> Why not overwrite -setNeedsDisplayInRect: put a little if logic to determine 
> if that's a size you would like to have more info on, add a NSLog() inside 
> and put your breakpoint on the NSLog() call?


But I need to be able to see **all** invocations of the method from **all** 
NSViews to catch the culprit, because I have a rather complicated view 
hierarchy, including some views for which I don't have the source, and I don't 
know exactly which view is doing this. In order to do that, I need to set a 
conditional breakpoint, and this would be easy if an NSRect could be stored in 
a register, but how do I set a conditional breakpoint when the variable I want 
to investigate is on the stack? And where would I find each of the CGFloats on 
the stack?

Nick Zitzmann
<http://www.chronosnet.com/>


_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to